본문 바로가기

git

git 기본 사용법

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해야 동작하기 시작한다

'git' 카테고리의 다른 글

git ssh 키 생성 등록  (0) 2023.06.25
git repository 생성  (0) 2023.06.25
git config  (0) 2023.06.25
Git 브랜치 관리  (0) 2023.06.25
pre-commit 과 도구들  (0) 2023.06.21