[GIT] 명령어 정리

SCY·2023년 2월 10일
0

🔵 커밋과 브랜치

$ 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> 브랜치 생성과 변환까지 한번에


🔵 브랜치 합치기

merge

$ git merge <병합될 branch>

$ git switch main
$ git merge issue1 main이 issue1을 병합

$ git add . $ git commit 충돌 시 수정 후 재실행

$ git branch -d issue1 브랜치 삭제

취소 : merge는 하나의 커밋이므로 reset으로 가능하다.
당장 해결 불가 시 $ git merge --abort로 중단.

rebase

$ 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/

profile
성장 중독 | 서버, 데이터, 정보 보안을 공부합니다.

0개의 댓글