git이 동작하는 방식을 이해하고 있어도 구체적인 명령어가 생각나지 않는 경우가 많다.
주로 사용하는 명령어가 정해져 있고 다양한 사례를 경험해 보지 못해 기억하지 못하는 이유가 가장 클 것이다.
매번 찾아보는 번거로움을 줄이기 위해 주요 사례 별로 주요 명령어를 정리해 본다.
깃 초기화
현재 디렉토리에 git을 초기화 한다.
> git init
Initialized empty Git repository in /Users/Username/Documents/temp/git-projects/proj-add/.git/
체크아웃 (checkout)
브랜치 생성과 이동을 한번에
로컬 저장소에 feature-01 브랜치가 없다면, 브랜치를 생성하고 feature-01 브랜치로 이동한다.
> git checkout -b feature-01
깃 버전이 업데이트 되면서 switch 명령에 -c 를 이용하여 브랜치 생성과 이동으로 한번에 할 수 있다.
> git switch -c new-branch
Switched to a new branch 'new-branch'
원격 브랜치 로컬에 체크아웃 받기
원격 저장소에 있는 feature-01 브랜치를 로컬 저장소로 받고 체크아웃 받은 로컬 브랜치로 이동한다.
> git checkout -b feature-01 origin/feature-01
브랜치 이동
feature-01 브랜치로 이동.
checkout 대신 switch 사용해도 됨.
> git checkout feature-01
> git switch feature-01
이전 브랜치 이동
바로 이전에 선택했던 브랜치로 이동한다.
> git checkout -
브랜치 (branch)
로컬 브랜치 이름 변경
현재 브랜치의 이름을 변경한다.
> git branch -m 현재브랜치명 변경할브랜치명
브랜치 목록 조회
로컬 저장소의 브랜치 목록을 보고 싶으면 아무 옵션 없이 git branch 를 입력한다.
> git branch
* feature
function
master
원격 브랜치 목록 조회
-r 옵션을 추가 입력하면 원격 저장소의 브랜치를 확인할 수 있다.
> git branch -r
origin/function
origin/hotfix
origin/master
로컬/원격 모든 브랜치 목록 조회
-a 옵션을 입력하면 로컬/원격 저장소의 모든 브랜치를 확인할 수 있다.
> git branch -a
feature
footer
* hotfix
master
remotes/origin/function
remotes/origin/hotfix
remotes/origin/master
브랜치 이름 변경
-m 옵션을 이용하여 브랜치 명을 변경할 수 있다.
> git branch -m old-name new-name
로컬 브랜치 삭제
-d나 -D 옵션을 입력하여 로컬 브랜치를 삭제할 수 있다.
> git branch -d bugfix/bugs-001
Deleted branch bugfix/bugs-001 (was 80950f77).
로컬/원격 트래킹 브랜치 확인
로컬 브랜치가 원격 저장소의 어떤 브랜치를 트래킹 하고 있는지 확인할 수 있다.
> git branch -vv
feature e45c236 [origin/function] first
footer e45c236 first
* hotfix 45467c1 [origin/hotfix] master working...
master 45467c1 [origin/master] master working...
브랜치 세부 사항 확인
-v 옵션을 추가 입력하면 각 브랜치의 해시값과 코멘트를 함께 확인할 수 있다.
> git branch -v
* feature 012a7c2 function working..
function 012a7c2 function working..
master 45467c1 master working...
스테이징 (staging)
스테이지에 파일 등록하기
add 다음에 .(dot) 혹은 -A 혹은 --all 을 입력하면 추가된 모든 파일을 스테이지 영역에 등록한다.
> git add .
or
> git add -A
or
> git add --all
파일 등록 취소
rm 명령어로 스테이지에 등록되어 tracked된 상태의 파일을 untracked 상태로 변경한다.
--cached 옵션을 사용하여 스테이지의 캐시 목록에서 파일을 삭제한다.
> git rm --cached 파일명
> git rm --cached index.html
커밋 (commit)
add와 commit을 한번에
-a 옵션을 추가하면 커밋 메시지를 입력하는 에디터가 실행된다.
> git commit -a
커밋 메시지 바로 추가
-m 옵션을 추가하면 에디터 실행없이 커멘드라인에서 바로 추가가능하다.
> git commit -m "커밋 메시지 입력"
스테이지 반영 이후엔 한번에
한번 add된 이후에는 두 옵션을 함께 입력할 수 있다.
-am 옵션을 사용하기 위해서는 먼저 add 명령을 사용해야 한다.
> git commit -am "커밋 메시지 입력"
빈 커밋 작성
메시지 입력없이 커밋을 작성한다.
> git commit --allow-empty-message -m ''
커밋 메시지 수정하기
바로 직전에 입력한 커밋 메시지를 수정한다.
> git commit --amend
diff 내용을 메시지로 추가
-v 옵션을 추가하면 diff 내용을 커밋 메시지로 추가할 수 있다.
> git commit -v
커밋사항 되돌리기
커밋한 사항을 취소하고, 변경된 파일은 스테이지에 등록된 상태로 유지
~는 바로 이전 커밋으로 reset한다.
> git reset --soft HEAD~
푸시 (push)
원격 저장소에 푸시
현재 로컬의 main 브랜치를 원격 저장소의 main 브랜치에 반영한다.
> git push origin main
이름이 다른 브랜치로 동기화
로컬 저장소의 feature 브랜치를 원격 저장소의 develop 브랜치로 푸시한다.
> git push -u origin feature:develop
원격 저장소에 푸시 & 연결 (업스트림)
로컬 브랜치가 아직 원격저장소와 연결되지 않은 상태라면 원격 저장소와 연결한다.
로컬 저장소의 main 브랜치를 origin 서버의 main 브랜치로 업스트림 설정한다.
> git push --set-upstream origin main
원격 브랜치 삭제
원격 브랜치에 있는 bugfix 브랜치를 삭제한다.
> git push origin --delete bugfix
리모트 (remote)
원격 저장소 연결
원격 저장소와 연결하려면 add 옵션을 사용한다.
원격 저장소를 추가할 때는 '원격저장소 이름' 과 '원격저장소 URL' 을 함께 입력한다.
> git remote add 원격저장소이름 원격저장소URL
> git remote add origin http://~~~.git
원격 저장소 목록 확인
연결된 원격 저장소의 이름을 출력한다.
> git remote
원격저장소 목록 확인 (이름 + URL)
연결된 원격 저장소의 이름과 URL을 출력한다.
> git remote -v
원격 브랜치 이름 변경
rename 을 이용하여 등록된 브랜치의 이름을 다시 변경할 수 있다.
origin 브랜치명을 main으로 변경한다.
> git remote rename 변경전 변경후
> git remote rename origin main
원격 브랜치 삭제
작업하면서 임시로 등록해 사용했던 브랜치는 rm 옵션으로 삭제한다.
> git remote rm 원격저장소이름
> git remote rm origin
원격 브랜치 상세 정보 확인
show 옵션을 사용하면 원격 저장소 브랜치의 상세 정보를 확인할 수 있다.
> git remote show origin
* 리모트 origin
가져오기 URL: https://github.com/test/test-branch.git
푸시 URL: https://github.com/test/test-branch.git
HEAD 브랜치: (알 수 없음)
깃헙 원격저장소 푸시 안될 때
원격 저장소에 대한 ssh url을 재정의한다.
> git remote set-url origin git@github.com:username/test-branch.git
로그 (log)
커밋 로그 확인하기
커밋된 내용을 확인하려면 log 명령을 이용한다.
> git log
로그 옵션을 이용하면 다양하게 로그를 확인할 수 있다.
- --pretty=short : 첫번째 줄의 커밋 메시지만 출력
- -p : 수정된 라인을 비교하는 diff 기능을 포함하여 출력
- --stat : 히스토리를 출력
- --pretty=oneline (간단히 --oneline) : 각 커밋을 한줄로 출력
특정 커밋의 상세 정보 확인
show 명령어를 이용하여 특정 커밋의 상세 정보를 확인한다.
> git show 커밋ID
> git show 9dd43cc
현재 브랜치 해시 값 확인
> git rev-parse feature
012a7c2f54ecc122698c06f4de1e9f85f7417274
차이 (diff)
스테이지 vs. 워킹 디렉토리 비교
diff 명령어를 이용하면 워킹 디렉토리와 스테이지 파일의 다른 점을 볼 수 있다.
> git diff
diff --git a/index.html b/index.html
index a954c00..f7bb351 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
</head>
<body>
<div>
- txt
+ txt`
</div>
</body>
</html>`
\ No newline at end of file
(END)
커밋 간 차이 비교
스테이지 영역에 있는 수정된 파일이 아직 커밋되지 않았으면, 최신 커밋과 변경 내용을 비교한다.
> git diff head
diff --git a/index.html b/index.html
index a954c00..f7bb351 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
</head>
<body>
<div>
- txt
+ txt`
</div>
</body>
</html>`
\ No newline at end of file
(END)
'IT & Dev.' 카테고리의 다른 글
Xcode Command Line Tool 설치하기 (8) | 2023.01.14 |
---|---|
M1 맥북 안전모드(Safe mode) 부팅하기 (10) | 2023.01.04 |
[git] 커밋하기 (1) | 2022.10.05 |
[git] 작업 영역과 상태 (0) | 2022.09.27 |
맥 개발 환경 세팅 ( iTerm2 + Oh my zsh + powerlevel10k ) (0) | 2022.09.26 |