본문 바로가기

프로그래밍/기타

[git] git 주요 명령 목록

만들기

 

저장소 만들기

git init

 

리모트 저장소 복제

git clone <URL>

 

원격 저장소 정보

git remote -v

 

원격 저장소 연결

git remote add <이름> <URL> : 저장소 이름의 기본값은 origin

 

원격 저장소 변경

git remote rename <저장소> <저장소>

git remote remove <저장소>

 

저장소에서 가져오기

git fetch <저장소> : 단순 가져오기

git pull <저장소> : fetch와 merge 

 

 


'저장

워킹 디렉토리 - 스테이징(Index) - 커밋 - 원격저장소push

 

스테이징

변경사항 전체 스테이징 추가

git add .

git add *

 

특정 파일 스테이징 추가

git add <file> <file> <file>

 

 

파일 삭제

git rm <파일>

git rm -f <파일>

git rm --cached <파일>  : 스테이징에서 삭제하나 파일은 남겨둠

 

 

파일 이동(파일명 변경)

git mv <이전파일명> <신규파일명>

 

 

커밋

git commit -m "커밋 메시지"

 

스테이징 + 커밋을 동시에

git commit -a -m "커밋 메시지"

 

커밋변경

다시 커밋 : 기존 커밋을 덮어쓴다

git commit -m "커밋메시지" --amend

 

 

저장소에 저장

git push <저장소> <브랜치>

 


취소

 

작업트리 되돌리기

git checkout HEAD <file> : 스테이징에 올리기전의 HEAD 위치로 돌아간다

: git reset --hard HEAD 을 사용해도 동일

 

스테이징 되돌리기

git reset HEAD <file> : <file>이 없으면 전체 취소

 

 

커밋 되돌리기 

1개 이전을 나타내는 문자는 '^' 또는 '~' 로 표시. HEAD^ 라면 HEAD 를 하나 이전으로 되돌림

--mixed, --soft, --hard 옵션이 있는데 기본은 --mixed로 동작한다.

작업트리유지 : 커밋과 스테이징은 취소되고 작업트리의 수정된 내용은 유지됨

git reset HEAD^ 

 

스테이징은 유지 : 커밋만 취소됨

git reset --soft HEAD^

 

모두 취소 : 작업트리의 수정된 내용까지 모두 취소

git reset --hard HEAD^

 

HEAD를 특정개수 만큼 되돌려 해당 갯수만큼의 커밋만 취소

git reset HEAD~2 : HEAD에서 2개 이전으로 되돌림

 

커밋을 원격 저장소의 마지막 상태로 되돌림

git reset --hard HEAD

 

되돌린것을 다시 되돌림

git reset --hard ORIG_HEAD

 

PUSH 되돌림

내용을 되돌린 후 커밋 : reset은 취소, revert 는 이전상태로 수정하는 명령

git revert HEAD

 

PUSH 취소

git reset HEAD^

git commit -m "커밋 취소 내용을 커밋"

git push origin +master

 


태그

 

단순 위치 태깅

git tag <태그>

 

 

브랜치처럼 해당 위치의 데이터를 별도로 저장해 태그 구성

git tag -a 태그 -m '메시지'

 

 

태그를 저장소로 전송

git push <저장소> <태그>

git push <저장소> --tags

 

 

태그삭제

git tag -d <태그>

 

태그목록

git show-ref --tags

git show-ref --abbrev=5 --tags

 

 

 

태그 해쉬 검색

git show-ref -s 태그

git rev-parse 태그

git log -1 태그 --pretty=%H

git rev-list -1 태그


log  보기

git log --oneline --decorate --tags --no-walk

git log --tags --no-walk --date=iso-local --pretty='%C(auto)%h %cd%d %s'

 


 

BRANCH

 

브랜치목록

git branch

git branch -r

 

현재 브랜치명

git rev-parse --abbrev-ref HEAD

 

브랜치 생성, 변경

git branch <브랜치>

git checkout <브랜치>

 

생성+이동

git checkout -b <브랜치>

 

브랜치 삭제

git branch -d <브랜치>

 

 

브랜치 머지 순서

merge 명령은 HEAD 위치에 합침.

master 브랜치로 머지하는 경우 이동한 뒤 머지 및 삭제

git checkout master

git merge <브랜치>

git branch -d <브랜치>

 

 

머지툴 실행

git mergetool

 
 

비교툴 실행

git difftool <브랜치> <파일>

 


CONFIG

설정조회

git config --list

git config --global --list

 

 

사용자명, 이메일

저장소별 설정

git config user.name "name"

git config user.email "e-mail"

 

전역설정

git config --global user.name "name"

git config --global user.email "e-mail"

 

 

비교, 머지툴 추가

git config --global merge.tool diffmerge

git config --global mergetool.diffmerge.cmd "\"C:/DiffMergePath/sgdm.exe\" --merge --result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\""

 

git config --global mergetool.diffmerge.trustExitCode true

git config --global mergetool.keepBackup false

 

git config --global diff.tool diffmerge

git config --global difftool.diffmerge.cmd "\"C:/DiffMergePath/sgdm.exe\" \"$LOCAL\" \"$REMOTE\""

 

 


config 파일

 

프로젝트별 설정 파일 위치

각프로젝트 폴더\.git\config

 

전역 설정 파일 위치

C:\Users\사용자\.gitconfig

[merge]
   tool = diffmerge

[mergetool]
   keepBackup = false

[mergetool "diffmerge"]
   cmd = \"C:/DiffMergePath/sgdm.exe\" --merge --result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
   trustExitCode = true

[diff]
   tool = diffmerge

[diff "diffmerge"]
   cmd = \"C:/DiffMergePath/sgdm.exe\" \"$LOCAL\" \"$REMOTE\"

 

 

 

 

 

'프로그래밍 > 기타' 카테고리의 다른 글

github ssh 설정  (0) 2022.09.02
[Python] 직접 실행과 import 시 실행 분리  (0) 2020.05.10
[git] git 서버 설정 기본사항  (0) 2017.01.23