Development/Git

Git 기본 명령어 정리

DevKTak 2023. 2. 18. 19:58

fetch

git fetch --all: 모든 원격 저장소 정보를 동기화 한다.

git fetch <remote> [branch]: remote를 지정하면 특정 remote의 변경 내용을 동기화하며, branch가 지정되면 특정 브랜치 정보만 동기화 한다. remote -> branch

 

commit

git commit -am "커밋 메시지": 워킹 트리에서 작업한 것을 add(스테이징 에어리어)로 옮김과 동시에 commit(로컬 저장소) + 커밋 메시지 등록

git commit --amend: commit 까지 완료하고 push 하기전에 커밋 메시지를 변경할 수 있다.

 

push

git push <remote> <place>: local <place> 브랜치로 가서 모든 커밋들을 수집합니다, 그다음 origin/<place> 브랜치로 가서 이 브랜치에 부족한 커밋들을 채워 넣습니다. place -> remote

ex) git push origin main

 

diff

git diff: 커밋된 마지막 버젼과 워킹 트리 사이에 차이점 비교

 

reset

git reset --hard <커밋 버젼>:워킹 트리에 작업한 내역을 없앤다. 해당 커밋 버젼으로 reset (default: --mixed)

 

revert

git revert <커밋 버젼>: 해당 커밋 버젼이 생길때의 변화 만큼만 되돌리는 것

 

checkout

git checkout <브랜치명>: 현재 브랜치 변경
git checkout -b <브랜치명>: 브랜치 생성과 동시에 현재 브랜치 변경
ex) git checkout -b foo origin/main: foo라는 이름의 새 브랜치를 checkout하고 이것을 원격 저장소의 main을 추적

git checkout <커밋 버젼>: 해당 커밋 버젼으로 시간 여행 (HEAD만 옮겨짐)
git checkout master: 마스터 커밋 버젼으로 돌아간다.

 

branch

git branch [브랜치명]: 브랜치 생성
git branch -a: 로컬 / 원격의 저장소의 모든 브랜치를 보여준다.
git branch -d [브랜치명]: 브랜치 삭제
git branch -f main HEAD~3: 강제로 main 브랜치를 HEAD에서 세 번 뒤로 옮겨라

ex) git branch -u origin/main foo: foo 브랜치가 origin/main을 추적하도록 설정
ex) git branch -f dev C5

 

log

git log --oneline --graph --all -p: 로그 확인

 

merge

git merge <다른 브랜치명>: 공통 조상을 base로 하고 현재 브랜치의 최신 커밋 버젼과 다른 브랜치의 최신 커밋 버젼을 현재 브랜치로 합쳐서 새로운 커밋을 만든다.

 

cherry-pick

git cherry-pick <커밋 버젼>: 3 way merge를 이용하여 해당 커밋 버젼이 생성될 때의 변화만을 현재 브랜치에 이어서 새로운 커밋 버젼을 만듬, 여기서 base는 해당 커밋버젼의 바로 앞 커밋 버젼

ex) git cherry-pick C5 C4 C3 C2

 

rebase: 공통 베이스(공통 조상)를 가진 브랜치에서 한 브랜치의 베이스를 다른 브랜치의 최신 커밋으로 브랜치의 베이스를 옮기는 작업

git rebase <다른 브랜치명>: 공통 베이스를 기준으로 현재 브랜치의 공통 베이스 다음 커밋 버젼부터 현재 버젼까지 다른 브랜치로 옮겨서(3 way merge를 통해 새로운 커밋 버젼을 만듬) 베이스를 바꿈, rebase를 하게 되면 HEAD는 다른 브랜치를 가리킨다.

git rebase <다른 브랜치명> <이동할 브랜치명>: 이동할 브랜치를 다른 브랜치로 옮긴다.

rebase 하려는 커밋 버젼들이 원격 저장소에 push 되기 전에만 가능하다.

 

Merge와 Rebase: Merge는 공통 조상 기준을 base로 하여 두 브랜치의 최신 버젼을 3 way merge로 합쳐서 새로운 버젼을 만들고, Rebase는 공통 조상을 base로 하여 옮기려는 버젼 갯수만큼 3 way merge를 하면서 새로운 버젼을 만드는 것,

결과는 같아야 한다.

 

 

TAG: Milestone(이정표)

git tag <태그명> <커밋 버전>: 커밋 버전을 지정해주지 않으면 HEAD에 태그가 붙는다.

 

'Development > Git' 카테고리의 다른 글

Git 협업을 해보자  (0) 2023.03.03
Git Pull Requests의 Merge 전략  (0) 2023.02.19