[git] git and github

0

global information tracking 이라는 이름에서 이니셜을 따서 GIT, 이름 그대로 정보를 추적하는 방법이다.
우리가 추적하고 싶어하는 정보는 바로 코드의 수정이 언제 어느 파일의 어느 부분에서 이루어 졌는가의 히스토리를 관리하는 것 즉 수정한 프로그램의 버전들의 내용들을 담아 필요에 따라 이전 버전으로 롤백도 할 수 있고 프로그래밍의 진행 사항들도 저장 할 수 있다.
GIT은 위에서 설명한 버전컨트롤을 할 수 있는 프로그램 중에 하나이며 GIT 외에도 비슷한 기능을 하는 프로그램들은 많다. GIT이 압도적으로 많이 쓰일 뿐.

그리고 해당 GIT을 인터넷으로 연결해 여러 프로그래머들이 동시에 같은 프로그램을 짤 수 있도록 협업을 할 수 있는 데, 이 때 GIT이 연결 되는 인터넷 hub 중 가장 유명한 github 가 있다. git과 github의 장점은 오픈소스이며 github로 연결 된 전 세계의 프로그래머들과 협업을 할 수 있고 또 프로젝트에 함께 참여 할 수 있다. 유명한 프로젝트의 기능을 만들어서 기여를 하였다 이러면 아마도 이력서에 한 줄 쓸만한 것이 되지 않을까?

Git workflow : 일반적으로 프로그래밍이 끝나면 github에 올리는 과정.

  1. 처음 시작 시, 프로젝트의 레포지토리에서 코드를 가져오기 위해 프로젝트 폴더를 다운 받을 수 있는 폴더 및 위치로 이동한다. (보통은 Desktop)
  2. git clone url 명령어를 이용하여 알고 있는 github 레포지토리의 url을 이용하여 전체 코드 파일들을 가지고 온다. (git clone 은 git init + git remote add + git fetch + git checkout을 다 합쳐놓은 프로젝트 폴더 복사이다)
  3. cd 명령어를 통하여 프로젝트 폴더로 이동한다.
  4. npm install 을 이용하여 react package들과 dependencies을 설치한다.
  5. git branch feature/xxxx (feature/xxxx의 xxxx는 보통 기능 이름)으로 깃 브랜치를 하나 만든다.
  6. git checkout feature/xxxx 로 해당 git branch로 이동한다. (디렉토리 이동과 다른 개념이다)
  7. 원하는 코딩 작업을 한다.
  8. git add . 로 작업했던 내용들을 모두 git 스테이지에 올려 놓는다.
  9. git commit -m "message" 로 수정 내용들의 세이브 포인트를 만든다.
  10. git push origin feature/xxxx 명령어로 리모트 레포에 feature/xxxx라는 브랜치를 복사하면서 수정 내용들도 같이 업로드 한다.
  11. 이 후 6 ~ 10 내용을 반복하면서 자주 commit과 push를 해준다.
  12. 담당했던 기능의 코딩이 완료됐다고 생각하면 push를 해주고 github으로 들어가서 PR (pull request) form을 작성한다. (회사마다 양식은 다르며 일종의 보고서라고 보면 된다.)
  13. 해당 pull request의 승인이 거절되면, pr 관리자의 코멘트대로 다시 코드를 수정하고 push하고 pr 양식을 수정하고 노티한다. pull request가 승인이 나면 관리자는 해당 브랜치를 remote master 브랜치와 merge를 하여 모든 코드의 수정을 업데이트 해준다. 중요!!) 이때 내가 한 수정 외에도 다른 사람들의 코드들도 remote master에 합쳐져 있을 수도 있으며 결론적으로 remote master과 나의 local master은 동일하게 만들어야 한다 (프로젝트를 계속 진행해야 하니깐).
  14. remote master의 수정내용을 가지고 오기 위해 현 브랜치에서 git checkout master 을 사용하여 local master로 이동한다.
  15. git pull origin master (origin은 리모트 url을 대체해주는 별명, 해당 위치의 master을 pull 해준다는 명령어, pull은 나의 파일과 다른 부분이 있는 것들을 모두 로컬 마스터로 가지고 와준다)
  16. git checkout feature/xxxx (내가 아직도 해당 브랜치에서 작업을 하고 있다면, 마스터의 내용을 나의 브랜치로 가져와야한다)
  17. git merge master 를 통해 나의 브랜치를 마스터와 동기화 시킨다.
  18. 다시 6번의 내용부터 계속 반복~

git을 사용 할 때 알아야 할점:
1. 여러사람과 협업 할 때 브랜치는 작은 기능 위주로 만드는 것을 추천.
2. 로컬 마스터에서 코드하지 말것, 항상 브랜치를 만들어서 해당 브랜치에서 코드하자 (역시 협업할때!, 혼자 할 때는 뭔 상관임). 마스터에서 코드를 하기 시작하면 행복하지 못 할 가능성이 높다.
3. 만약 2번 내용을 까먹고 마스터에서 코드를 했다고 치자....이런 ㅎㅎㅎ. 이때 git stash 명령어를 이용하여 수정 내용들을 일단 저장해놓고, 새로운 브랜치를 만들어서 해당 브랜치에서 git stash apply로 저장해 논 수정 내용들을 끌어오면 master 쪽의 스테이지는 깨끗해진다 (잠만 따로 지워야하나? ;;)
4. 하나의 브랜치에서 또 브랜치를 만들지 말자, 더러워진다. 항상 브랜치는 마스터 위치에서 만들고, 해당 브랜치로 이동하자.

profile
내가 기억하려고 작성 중인 블로그

0개의 댓글