git 기본 사용법
- 공식 git 사용법
- git 은 가급적 UI가 포함된 IDE를 통해서 사용하는 것이 편하다. 하지만 늘 우리가 예상하지 않은 동작을 할때가 있고 그때는 명확히 하기 위해 command를 사용하는 것이 좋다. 또한 터미널 환경에서 편하게 사용하기에 좋다.
- git UI
- 크라켄 : 좋다 하지만 유료
- 소스트리 : 별로다 하지만 무료
- smartgit : 좋다 하지만 유료 크라켄보다는 좋지 않음
- GitHub desktop : 아직 잘 모르겠다
- pycharm : IDE 중 git 기능이 좋다
- visual studio code : 기본 git 기능은 좋지 않지만 plugin을 설치한다면 좋다.
상태보기
- master : 현재 브랜치
- modified : 수정사항
- Untracked files : 추적하지 않는 파일 즉 git에 추가되지 않은 파일
- deleted : 삭제된 파일
- git log 전체에서 삭제하고 싶은 경우 git rm 을 이용하자.
# 저장소 전체 상태보기
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: test1
Untracked files:
(use "git add <file>..." to include in what will be committed)
test
no changes added to commit (use "git add" and/or "git commit -a")
# 해당폴더만 상태보기
$ git status ./
로그보기
# 저장소 전체 커밋 로그 보기
$ git log
Author: Janne Hellsten <jjhellst@gmail.com>
Date: Thu Oct 28 10:53:15 2021 +0300
Update README.md
commit f2f751cdc7f996e3138b8b1c08b6cf7ed36a1fc6
Author: Tero Karras <tkarras@nvidia.com>
Date: Tue Oct 12 10:04:25 2021 +0300
Update versions.html for StyleGAN3
commit 81ae61d7753c6a7b5a38c29aa81aed15adb19c2f
Author: Tero Karras <tkarras@nvidia.com>
Date: Thu Jun 24 08:32:03 2021 +0300
Alias-Free GAN links
....
# 해당폴더만 커밋 로그 보기
$ git log ./
# 로그와 변경 사항 같이 보기
$ git log -p
$ git log ./ -p
commit f2f751cdc7f996e3138b8b1c08b6cf7ed36a1fc6
Author: Tero Karras <tkarras@nvidia.com>
Date: Tue Oct 12 10:04:25 2021 +0300
Update versions.html for StyleGAN3
diff --git a/docs/versions.html b/docs/versions.html
index bd730d6..09fdaa9 100755
--- a/docs/versions.html
+++ b/docs/versions.html
@@ -45,11 +45,11 @@
</head>
<body class="max-width">
-<h1>Alias-Free GAN (2021)</h1>
+<h1>StyleGAN3 (2021)</h1>
<ul>
- <li>Project page: <a href="https://nvlabs.github.io/alias-free-gan">https://nvlabs.github.io/alias-free-gan</a></li>
+ <li>Project page: <a href="https://nvlabs.github.io/stylegan3">https://nvlabs.github.io/stylegan3</a></li>
<li>ArXiv: <a href="https://arxiv.org/abs/2106.12423">https://arxiv.org/abs/2106.12423</a></li>
- <li>PyTorch implementation: <a href="https://github.com/NVlabs/alias-free-gan">https://github.com/NVlabs/alias-free-gan</a></li>
+ <li>PyTorch implementation: <a href="https://github.com/NVlabs/stylegan3">https://github.com/NVlabs/stylegan3</a></li>
</ul>
<h1>StyleGAN2-ADA (2020)</h1>
....
# 특정 커밋만 변경 사항 보기
$ git show aabbcc11233
수정사항 보기
# 저장소 전체 수정사항 보기
$ git diff
# 해당폴더만 수정사항 보기
$ git diff ./
# git 기본 에디터 변경 (한번만 하면 됨)
$ git config --global core.editor vim
# vi를 이용하여 비교하기
$ git difftool ./
커밋을 위해 추가
$ git add ./
$ git add *
$ git add ./test.txt
커밋하기
# vim 화면에서 커밋 메시지 작성후 저장하고 커밋
$ git commit
# 명령창에서 메시지 작성 후 바로 커밋
$ git commit -m "update test"
커밋 취소하기
- 커밋한 내용을 취소하고 싶을 때 사용하자
- 원격(즉 push를 하지 않은 상태에서)이 아닌 로컬에서 커밋을 했을 때 취소하자.
- 원격에 있는 커밋은 취소하여 push 할 수 없다. 그렇게 하면 다른 사용자들과 차이가 나는 문제도 있고 관련된 부분을 수정할려면 저장소에서 권한 자체를 풀어 줘야 한다. 정말 어쩔 수 없는 일이 아닌 이상 지양하자.
# 취소하고 싶은 커밋 갯수를 숫자로 표시하자
$ git reset HEAD~1
# 기본으로 soft 한 reset이 되서 해당 커밋의 변경 사항이 남아 있다.
# 하지만 해당 커밋의 변경 사항까지 지우고 싶으면 --hard 옵션을 넣으면 되지만 지양하자.
# 늘 확인을 하고 지우는 습관을 들이는게 좋다.
$ git reset --hard HEAD~1
push하기
# 현재 브랜치에서 커밋
$ git push
# 원격 브랜치 설정 후 커밋
$ git push origin remote_branch
$ git push origin test_branch
수정 사항 취소 하기
- modified 된 부분을 원래 상태로 돌려 놓거나 (다른 IDE에서는 rollback이나 discard라고 하기도 함)
- deleted 한 파일을 원래 상태로 생성해 놓음
$ git checkout ./file_name.py
해당 저장소 주소 보기
$ git remote -v
.gitignore
- 저장소에 포함되지 않고 싶은 파일들을 여기서 넣어 놓는다
- ex) 데이터 파일, 학습 파일, pyc 와 같은 임시파일
- github가 생각하는 기본적인 python gitignore을 이용하되 추가로 넣지 않고 싶은 폴더를 지정한다
- .gitignore을 add하여 commit해야 동작하기 시작한다