엄범

 

GitHub 단축키 리스트 보기는 `` ?``

 

이미 만들어진 저장소를 remote와 연결
  • 리모트 저장소  
  • alias는 보통 origin으로 쓰지만 로컬에서만 사용하는거니까 아무거나 해도 상관없다.

```bash

git init

git remote add alias url

git remote -v

git pull alias branch    OR    git fetch alias

```

 

커밋 관련

커밋 히스토리 조회

```bash

git diff

git log

git log -p [-숫자]

```

 

commit 합치기 - rebase

commit할 때 뭔가 커밋 단위가 너무 작아서 여러개의 커밋을 묶고 싶을 때 사용한다.

```

git rebase -i feature1 ~ 4    # feature1 브랜치 최상위 커밋부터 아래 4번째 커밋까지 합친다.

```

source tree 이용하면 간단

 

주의) 여럿이서 작업하는데 remote에 올라간 커밋을 rebase해서 합쳐버리는 경우 문제가 생길 수 있음.

그래서 로컬에서 commit만 하면서 작업하다, 어느정도 작업이 끝나면 push하기 전 rebase로 커밋을 묶은 다음 push하는 방법을 사용한다.

 

 

커밋 취소

로컬에서 수정한 파일 다시 되돌리기

```bash

git reset HEAD file

git checkout -- file

```

 

로컬에서 수정한거 유지하면서 커밋만 뒤로 되돌려서 다시 커밋하고 싶을 때

```bash

git reset --soft HEAD~1

```

 

커밋을 아예 취소하고 로컬 저장소와 github를 모두 이전 상태로 되돌리기

```bash

git reset --hard HEAD~1     // HEAD가 이전 커밋을 가리키게 된다.

git push origin -f

```

  • 이전 커밋으로 되돌린 다음 `` push``하려고 하면 현재 branch가 더 뒤에 있기 때문에 에러가 발생한다.
    • 기본적으로 fast-forward하도록 되어 있기 때문에 먼저 ``bash git pull``하라고 나온다.
  • 그래서 반드시 ``bash origin -f``를 주어야 한다.
  • * reset의 기본 옵션은 `` --mixed``이며 상황에 따라 `` --soft``를 줄 수 있다.

 

Reset과 checkout의 차이

Command Scope Common use cases
git reset Commit-level Discard commits in a private branch or throw away uncommited changes
git reset File-level Unstage a file
git checkout Commit-level Switch between branches or inspect old snapshots
git checkout File-level Discard changes in the working directory
git revert Commit-level Undo commits in a public branch
git revert File-level (N/A)

 

Branch 관련

branch 확인 및 변경
```bash
git branch -r   // branch list 확인
git checkout --track <branch_path>    // branch 변경
git branch      // 현재 선택된 작업 branch 확인
```

다른 hub의 프로젝트 ( telegram같은 ) 를 가져올 때는 github 홈페이지에서 clone해야 한다.

그냥 clone이나 remote하면 그 hub에 remote 연결돼서 그 쪽으로 push하게됨.

 
branch 생성
```bash
git checkout -b umbum    // 먼저 local에 만들어주고
git push origin umbum    // remote에도 생성
git branch --set-upstream-to origin/umbum   // local과 remote를 연결해서 remote쪽으로 push 할 수 있도록 설정
```
 
branch 삭제
```bash
git branch -d umbum    // 먼저 로컬에서 삭제하고
git push origin :umbum    // 로컬에서 삭제한걸 remote에 반영(remote에서 삭제)
git push origin --delete issue/porting_umbum     // 로컬은 놔두고 remote에서 삭제.
```

 

branch merge (develop 브랜치와 동기화하기)
```bash
(feature/#5) $ git merge develop
```
 

기타

Tag 관련
 
README에 badge image 달기
 
Intellij project하나 만들고 빈 Github repository와 연결

 

브랜치 때문에 런타임에 에러가 발생할 수도 있음!!!
  • 어떤 브랜치1에서 컴파일 해서 target 폴더가 생성된다. 
    • 이 때 `` b1.properties`` 값들이 세팅된 상태로 컴파일 된다.
  • 브랜치2로 변경한다.
    • target 폴더는 보통 ignore 되어 있어서 checkout 해도 바뀌지 않는다. 즉, 브랜치1에서 컴파일한 그대로다
  • 브랜치2에서 컴파일 할 때, `` b2.properties``에 있는 값들을 세팅하고 컴파일 해야 하는데, IDE가 소스에 변경이 없다고 판단하는 경우 그냥 컴파일이 되지 않는 부분도 있다. 
    • 그래서 `` b1.properties``에 세팅된 값으로 컴파일된 부분이 그대로 남아있을 수 있다.
  • 이렇게 되면 런타임에 에러가 발생한다. 

 

'Utilities > GIT' 카테고리의 다른 글

[Git] commit message 작성법 / 코드 리뷰 comment 작성법  (2) 2017.09.01
[Git] 자주쓰는 command  (0) 2017.02.06