$ git init
$ git add file.txt staging
$ git commit -m 'first commit'
$ git status
$ git branch issue1
$ git branch
issue1
* master
$ git switch -c <branch> 브랜치 생성과 변환까지 한번에
$ git merge <병합될 branch>
$ git switch main
$ git merge issue1 main이 issue1을 병합
$ git add . $ git commit 충돌 시 수정 후 재실행
$ git branch -d issue1 브랜치 삭제
취소 : merge는 하나의 커밋이므로 reset으로 가능하다.
당장 해결 불가 시 $ git merge --abort로 중단.
$ git switch issue2
$ git rebase main main---issue2(HEAD) 모양의 그림
$ git add . $ git rebase --continue 충돌 시 수정 후 재실행
$ git switch main
$ git merge issue2 HEAD의 위치 옮기기
취소 : $ git rebase --abort
태그는 커밋에 이름을 붙이는 기능을 가진다.
이름 태그와 주석이 달린 태그로 나뉜다.
$ git tag <tagname> 이름 태그 생성
$ git tag 태그 목록 확인
$ git log --decorate 태그 정보를 포함한 이력 확인
$ git tag -a <tagname> 주석 달린 태그 생성
$ git tag -n 태그 목록과 주석 내용 확인
$ git tag -d <tagname> 태그 삭제
$ git commit --amend 커밋 수정하기
revert 삭제 작업을 실행하는 새로운 커밋 생성, 안전 삭제
reset 불필요한 커밋 버리기
$ git revert (돌아갈 커밋 해시)
$ git reset --hard (돌아갈 커밋 해시)
| HEAD 위치 | 인덱스 | 작업 트리 | |
|---|---|---|---|
| soft | 변경O | 변경X | 변경X |
| mixed | 변경O | 변경O | 변경X |
| hard | 변경O | 변경O | 변경O |
push 로컬 -> 원격 (업로드)
pull 원격 -> 로컬 (다운로드, 업데이트)
clone 원격을 전체 복제
pull 한 코드를 변경하고 push 하려는데 그새 누군가 push 했을 때 나의 push는 거부된다. 그럴 때는 merge로 갱신해주면 된다. 갱신 과정에서 충돌 발생 시 직접 수정한다.
단순히 원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우에는 fetch 명령어를 사용한다.
pull = fetch + merge
cherry-pick
다른 브랜치에서 지정한 커밋을 복사하여 현재 브랜치로 가져오기
rebase -i
커밋을 다시 쓰거나 다른 커밋과 바꿔 넣을 수 있으며 특정 위치의 커밋을 삭제하거나 여러 커밋을 하나로 통합하는 작업을 할 수 있습니다.
https://backlog.com/git-tutorial/kr/
https://www.yalco.kr/@git-github/1-5/