본문 바로가기

Git

[Git] 터미널 명령어(+옵션) 모음

반응형

git 을 사용할 때, 대부분은 소스트리나 IDE에서 지원하는 GUI 도구를 이용할 것이다.

하지만 GUI 도구를 사용할 수 없거나, 사용하지 않는 사람들을 위해 자주 쓰는 명령어(필자 주관)를 정리했다. 

※ 각 명령어에 대한 설명은 기타 다른 웹사이트에 자세히 설명되어있으니, 자세한 설명은 생략한다.

 

stash

stash 는 현재 작업 중이던 변경사항을 커밋하지 않고 저장할 수 있는 git 의 기능

git stash -m 'message' # 작업중이던 변경된 파일들 stash 영역에 저장
git stash show [stash number] # stash 영역에 저장된 파일 보기
git stash list # 생성한 stash 리스트 보기
git stash apply [stash number] # 번호에 해당하는 stash 영역에 있는 파일들 불러오기
git stash drop [stash number] # 번호에 해당하는 stash 영역 삭제

 

branch , checkout

브랜치 및 브랜치 전환

# 브랜치 확인
git branch # 로컬 브랜치 확인
git branch -r # 원격 브랜치 확인
git branch -a # 로컬 및 원격 브랜치 전체 확인

# 브랜치 삭제
git branch -d [브랜치명] # 로컬 브랜치 삭제
git branch -D [브랜치명] # 강제 삭제(머지여부 상관없이 삭제)
git push origin --delete [브랜치명] # 원격 브랜치 삭제

# 브랜치 전환
git checkout -t origin/[원격브랜치명] # 원격브랜치를 가져와서 같은 이름으로 브랜치를 로컬에 생성 후 전환
git checkout -b [새로운브랜치명] origin/[원격브랜치명] # 원격브랜치를 새로운 이름으로 생성 후 전환

 

fetch , remote update

저장소 업데이트

# remote
git remote update # 모든 리모트 정보를 업데이트
git remote update --prune # 현재 자신의 로컬에 있는 리모트 브랜치 정보를 최신으로 업데이트

# fetch
git fetch # 현재 체크아웃된 리모트 정보를 업데이트
git fetch --prune[-p] # 현재 자신의 로컬에 있는 리모트 브랜치 정보를 최신으로 업데이트

※ 보통 git fetch -p 를 주로 사용함

 

rebase

리베이스는 현재 베이스를 지정한 브랜치로 재정의하는 것으로, 쉽게 말해서 현재 브랜치에서 작업한 커밋을 리베이스로 지정한 브랜치 위로 붙이는 것을 의미한다. 

git rebase [branch | origin/branch]

 

pull , push
git pull # 원격저장소 변경사항 로컬 병합 (병합 시 merge commit 생성) => fetch + merge
git pull --rebase # 원격저장소 변경사항 로컬 병합 (merge commit 없음) => fetch + rebase
git push # 원격저장소에 현재 커밋 업로드
git push --force[-f] # 원격저장소에 현재 커밋 강제 업로드 (rebase or reset 시 사용됨) 가급적 push -f 는 사용하지 않기를..

 

log
git log # 깃 로그 확인
git log -p # 수정된 파일 목록 및 수정내용 전체 확인
git log --name-only # 수정된 파일 목록 확인
git show [commit id] # 특정 커밋 수정된 파일 목록 및 수정내용 확인
git show [commit id] --name-only # 특정 커밋 수정된 파일 목록 확인
git reflog # 깃 모든 커밋 로그 출력 (reset 과 상관없이 로컬에서 커밋한 모든 내역을 확인할 수 있다)

 

reset, revert ( 롤백관련 )
git reset --hard [commit id] # 지정한 커밋 id 로 리셋 (해당 커밋으로 소스가 모두 변경됨)
git reset --soft [commit id] # 지정한 커밋 id 로 리셋 (해당 커밋으로 Head 는 변경되지만 위에서 작업한 커밋 파일들은 남아있음)
git revert [commit id] # 지정한 커밋으로 롤백되고 롤백커밋 생성됨 (push force 가 안될 때 사용)
git checkout HEAD [path] # 특정파일 변경시점 전으로 롤백
git restore [path] # 커밋은 안했지만 변경이 감지된 파일을 원복

 

커밋메세지 수정

→  amend

git commit --amend

※ amend 를 사용하면 가장 마지막 commit 내용을 수정할 수 있다. vi 편집기가 나타나면 커밋 메세지를 수정한 후 esc -> :wq 를 통해 vi 편집기 저장 및 종료한다.

 

→  rebase

git rebase -i HEAD~n # HEAD 에서부터 n 번째 커밋 수정

※ 한번에 여러개의 커밋메세지를 수정할 수 있는 명령어로 위 명령어를 통해 vi 편집기가 나타나면 n번째 로그가 편집기를 통해 출력되어있는 것을 확인할 수 있다. 이 때 수정을 원하는 메세지에 pick 이라는 키워드를 reword 로 변경 후 메세지를 수정하면 된다. 

수정한 후 esc -> :wq 를 통해 vi 편집기 저장 및 종료한다.

위의 amend 나 rebse -i 를 통해 커밋메세지를 수정했다면 git log 명령어를 통해 메세지가 정상적으로 수정되었는지 확인한다.

이 후, 해당 메세지를 리모트에도 반영하려면 git push --force 로 강제 푸쉬 해줘야한다.

 

 

위의 명령어들은 자주 사용하는 git 터미널 명령어를 정리해놓은 것이다. 실제로 git 명령어는 매우 많으며 위는 빙산의 일각이라고 생각한다. 하지만 git 은 친절하기 때문에 터미널에서 보통 다음 명령어에 대한 가이드를 주기 때문에 적절한 가이드와 구글링을 통해 사용하면 무리없이 git 을 사용할 수 있을 것이라고 생각한다. 

 

잘못된 부분은 댓글 부탁드립니다. 

반응형