티스토리 뷰

etc/git

git 치트 시트

기억용블로그 2022. 9. 30. 16:02
728x90

 

환경 설정

모든 로컬 저장소에 적용할 사용자 정보를 설정합니다

자신이 생성한 커밋(commit)에 들어갈 이름을 설정합니다
$ git config --global user.name "[name]"

자신이 생성한 커밋에 들어갈 이메일 주소를 설정합니다
$ git config --global user.email "[email address]"

디폴트 에디터인 vim을 vscode로 변경합니다
--wait를 주면 에디터가 종료되기 전까지 다른 명령어를 수행할 수 없게 합니다
$ git config --global core.editor "code --wait"

vscode on WSL seems not working properly. 
Better to use vim or emacs
git config --global core.editor {vim or emacs}

vscode로 설정파일을 엽니다
$ git config --global -e

$ git config --list

Windows의 경우 \r\n으로 줄바꿈을 하기때문에 true 
Mac이나 Linux의 경우 \n으로 줄바꿈하므로 input 로 설정합니다
git config --global core.autocrlf true

 

저장소 생성하기

새로운 저장소를 만들거나, 다른 저장소의 URL을 이용해 저장소를 복사합니다

새로운 로컬 저장소를 생성하고 이름을 정합니다
$ git init [project-name]

기존 프로젝트의 모든 커밋 내역을 가져와 저장소를 만듭니다
$ git clone [url]

 

local의 project를 github의 remote에 추가하려는 경우

github에 repository를 미리 생성.

project의 root에서 실행합니다. (e.g. src 폴더가 보이는 곳)
$ git init
$ git remote add origin https://github.com/유저네임/리포지토리명.git
$ git push -u origin main
README.md 등의 파일이 존재한다면 -f(force) 플래그를 이용하여 override 할 수 있습니다.

 

이미 존재하는 리포지토리와 연결하고 싶을때

 

$ git remote -v
$ git remote set-url origin https://github.com/{username}/{projects}.git

 

변경점을 저장하기

수정 사항을 검토하고 커밋을 생성합니다

커밋할 수 있는 새로운 파일과 수정된 파일의 목록을 보여줍니다
$ git status

수정하였으나 아직 stage하지 않은 파일의 변경점을 보여줍니다
$ git diff

커밋을 준비하기 위해 파일을 stage합니다
$ git add [file]
stage all files.
$ git add -A

stage하였으나 아직 커밋하지 않은 파일과 가장 최근에 커밋한 파일을 비교합니다
$ git diff --staged

파일의 내용은 유지한 채로 stage한 내역만을 제거합니다
$ git reset [file]

stage한 내용을 커밋으로 영구히 저장합니다
$ git commit -m "[descriptive message]"
git commit -a를 이용하여 add와 commit을 한 번에 할 수 있습니다

 

변경점을 묶어 관리하기

일련의 커밋에 이름을 붙이고 여러 변경점을 합칩니다

현재 저장소의 모든 로컬 브랜치를 보여줍니다
$ git branch

새로운 브랜치를 생성합니다
$ git branch [branch-name]

특정 브랜치로 전환하고 워킹 디렉토리를 업데이트합니다
$ git switch -c [branch-name]

현재 브랜치에 특정 브랜치의 히스토리를 병합시킵니다
$ git merge [branch-name]

브랜치를 삭제합니다
$ git branch -d [branch-name]

 

파일 이름 바꾸기

버전 관리 중인 파일을 옮기거나 삭제합니다

워킹 디렉토리에 있는 파일을 제거하고 삭제한 내역을 stage합니다
$ git rm [file]

현재 파일은 그대로 두고 버전 관리 체계에서만 제거합니다
$ git rm --cached [file]

파일명을 변경하고 해당 내역을 stage합니다
$ git mv [file-original] [file-renamed]

 

특정 파일을 저장소에서 제외하기

임시 파일과 경로를 제외시킵니다

*.log
build/
temp-*

.gitignore이라는 텍스트 파일에 제외할 문자열 패턴을 지정하여 실수로 엉뚱한 파일이나 경로가 저장되지 않게 방지할 수 있습니다

 

이 프로젝트에서 제외된 모든 파일을 보여줍니다
$ git ls-files --others --ignored --exclude-standard

 

변경점 일부분을 저장하기

불완전한 변경 사항을 임시로 저장하거나 복원합니다

버전 관리 중인 모든 파일의 변경점을 임시로 저장합니다
$ git stash

가장 최근에 임시 저장한 내용을 복원합니다
$ git stash pop

임시 저장된 모든 변경점의 목록을 보여줍니다
$ git stash list

가장 최근에 임시 저장한 내용을 지웁니다
$ git stash drop

 

변경 기록 검토

프로젝트 내 파일의 변경 기록을 살펴보고 검토합니다

현재 브랜치의 HEAD의 위치부터 시작해서 스크롤(Enter)를 통해 브랜치의 변화를 쭉 추적할 수 있습니다
스크롤을 종료하기 위해서 q를 입력합니다
$ git log

log의 기록을 다음과 같은 플래그를 통해 한번에 편하게 볼 수 있습니다
$ git log --oneline --graph --decorate

현재 branch의 commit list를 보여줍니다 
branch의 변화와는 관련이 없으며 오로지 local machine에서의 변경점만을 다룹니다
reflog를 이해하고 나면 한번 commit하고 난 데이터는 잃지 않는다는 것을 알 수 있습니다
$ git reflog

특정 파일의 변경 기록을 보여줍니다(파일명 변경 포함)
$ git log --follow [file]

두 브랜치의 차이점을 비교합니다
$ git diff [first-branch]...[second-branch]

특정 커밋에 포함된 변경 사항과 메타데이터를 표시합니다
$ git show [commit]

 

커밋 되돌리기

실수한 내용을 지우고 기록을 바꿉니다

현재 파일의 변경 사항은 그대로 두고 ‘[커밋]’ 이후의 모든 커밋 내용을 되돌립니다
$ git reset [commit]
--soft, --mixed (default), --hard

e.g. git reset HEAD~

모든 변경점과 기록을 버리고 특정 커밋으로 되돌아갑니다
$ git reset --hard [commit]

 

변경점을 동기화하기

원격 저장소(의 URL)을 등록하고 저장소 기록을 주고받습니다

원격 저장소로부터 모든 기록을 받아옵니다
$ git fetch [remote]

원격 브랜치를 현재 사용 중인 로컬 브랜치와 병합합니다
$ git merge [remote]/[branch]

모든 로컬 브랜치의 변경점을 GitHub에 업로드합니다
$ git push [remote] [branch]
for your initial push
$ git push --set-upstream origin main

북마크된 원격 브랜치의 기록을 다운로드하여 변경점을 병합합니다
$ git pull

 

커맨드 테스트하기

--dry-run flag를 통해 실제 변경은 이뤄지지 않는 안전한 상태로 테스트 해볼 수 있습니다
$ git push --dry-run
$ git fetch --dry-run

 

레퍼런스

https://training.github.com/downloads/ko/github-git-cheat-sheet/

 

GitHub Git Cheat Sheet

Git 설치하기 GitHub은 일반적으로 많이 사용되는 저장소 관련 작업을 위한 데스크톱 클라이언트와 함께, 더 복잡한 작업을 위해 자동으로 업데이트되는 Git command line 에디션을 제공합니다. Windows

training.github.com

 

'etc > git' 카테고리의 다른 글

.gitignore에 파일 추가하는 방법  (0) 2022.12.02
git stage, commit, push 한번에 하기  (0) 2022.11.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함