[Git] 자주쓰는 command
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번째 커밋까지 합친다.
```
주의) 여럿이서 작업하는데 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``를 줄 수 있다.
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 확인 및 변경
다른 hub의 프로젝트 ( telegram같은 ) 를 가져올 때는 github 홈페이지에서 clone해야 한다.
그냥 clone이나 remote하면 그 hub에 remote 연결돼서 그 쪽으로 push하게됨.
branch 생성
branch 삭제
branch 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``에 세팅된 값으로 컴파일된 부분이 그대로 남아있을 수 있다.
- 이렇게 되면 런타임에 에러가 발생한다.
롤백 하기 (with GitKraken)
여러 브랜치가 섞여서 머지되어 있는 경우,
그리고 어떤 브랜치는 롤백해야 하는 브랜치를 시작지점으로 삼아 작업이 된 경우.
롤백해야 하는 부분을, 가장 최근 커밋부터 하나 씩 revert 해나가면 문제되는 부분만 롤백할 수 있다.
'Utilities > GIT' 카테고리의 다른 글
[Git] commit message 작성법 / 코드 리뷰 comment 작성법 (2) | 2017.09.01 |
---|