나는 다른 사람들이 github에 올려놓은 딥러닝 모델 코드들을 자주 clone하여 로컬에 저장한다. 남들이 올려놓은 소스코드를 보며 공부도 하고 조금씩 수정해서 내가 해야할 task에 이용하기도 한다. 이 github에 올라놓은 코드들은 git을 이용해 작업한 가장 최신의 결과물이라 보아도 될 것이다.
코드를 자주 수정해서 수정 전에 복사본을 만들어 놓아야하거나, 다른 사람들과 협업하며 코드를 공유, 수정, 통합해야 한다면 Git을 이용하면 편하다.
깃은 버전 컨트롤 시스템이다. 말그대로 버전을 계속 트랙킹해준다. 따라서, 수정을 잘못해도 이전 버전으로 돌아갈 수 있도록 해주고, 수정과 통합을 지속적으로 해야하는 협업을 쉽게 만든다.
깃 기초 명령어
git init - 버전 관리를 하고 싶은 디렉토리에서 git init 명령어를 이용하면 버전 컨트롤이 시작된다.
git add - git status를 쳐보자. 그럼 파일이 tracked 되었는지 안 되었는지 알 수 있다. 파일이 Tracked상태가 되기 전까지는 Git은 그 파일을 커밋하지 않는다. 그렇기 때문에 git add 명령어로 직접 Tracked 상태로 만들어 파일을 추척하도록 만들어야 한다. 파일을 수정하고 git add 를 한 뒤 git status 명령을 다시 실행하면, 파일이 Tracked되고 Staged 상태라는 것을 확인할 수 있다. 이 과정은 commit 이전에 필수로 이루어져야 한다.
git branch - 독립적 공간을 만든다. master branch에는 아무 영향을 주지 않는다. 성격이 다른 여러 작업을 해야하면 그만큼 branch를 만들어서 작업하면 된다. 이 전 파일들을 모두 복사해 branch를 구성하기 때문에 번거롭지 않다. 나중에 git merge를 이용하면 branch의 통합도 가능하다.
git checkout - 독립 작업공간인 branch를 넘나들 수 있다.
git commit - 수정을 마친 후 로컬 레포지토리에 버전을 저장하는 것
git pull - github과 같은 원격 레포지토리에서 로컬 레포지토리로 가져오는 것
master - git init을 했을 때 가장 먼저 만들어지는 root라고 할 수 있다.
git log - 깃 상태 확인
gistory - git init을 하면 .git 디렉토리가 생성되는데 그 디렉토리 안에서 gistory를 이용하면 git 버전 상태를 쉽게 확인할 수 있다.
git clone (path) - 레포지토리에서 코드 가져오기
git merge (branch) - merge를 실시한다. master와 branch1이 있으면, master에서 git merge branch1을 해서 master에 merge 가능
git pull - 코드를 받아와 변경점을 merge한다.
git fetch - 코드를 받아온다. merge는 하지 않는다.
+) Github에 올리기
https://www.datacamp.com/community/tutorials/git-push-pull