티스토리 뷰
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/
'etc > git' 카테고리의 다른 글
.gitignore에 파일 추가하는 방법 (0) | 2022.12.02 |
---|---|
git stage, commit, push 한번에 하기 (0) | 2022.11.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- vim
- 배포
- RequestParam
- 아키텍처
- neovim
- 루나빔
- Dap
- IDE
- 도커
- JavaScript
- ModelAttribute
- RequestBody
- lunarvim
- RequestPart
- 레디스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함