git branch — set-upstream-to=remote_path/branch_name : git pull no tracking info 에러해결
다른 개발자의 코드 받아오기
코드를 git으로 다른사람들과 함께 작업하고 싶다면 git 서버가 필요합니다.
물론 git server를 직접 구축할 수 도 있지만, 이미 잘 만들어둔 서비스들이 존재합니다. 대표적은 예로 Github과 Bitbucket이 존재합니다. 이런 서비스를 통해 다른 사람들이게 코드를 공유할 수 있는데, 다른 사람의 코드를 받아오고 싶다면 어떻게 해야할까요?
github angular page
github 서비스에서는 download와 clone을 제공하고 있습니다. 저는 terminal을 사랑하기 때문에 terminal 위주로 설명하겠습니다. Github에서 angular를 받아오고 싶다면, 아래 명령어로 받아 올 수 있습니다.
보통 GitHub에 등록된 opensouce의 경우 직접 clone을 하기 보다는 Github의 fork를 이용하여, 자신의 저장소에 복사한후 clone하여 작업하고 수정하는 경우가 많습니다. 이유인즉 opensouce에 직접 업로드할 권한이 없기때문에 Github의 자신의 저장소에 복사하면, 코드를 관리할 수 있게됩니다.
만약 opensouce에 버그를 발견하였고, 이를 수정하여 전달하고 싶다면, Github의 pull request를 활용해 수정사항을 전달 할 수 있고, 관리자가 허락해준다면 opensouce에 기여할 수 있게됩니다.
이미 다운 받았고, 최신 내용을 git 서버에서 받아와야 한다면, git pull과 git fetch로 받을수 있습니다.
git pull // 코드를 받아와 변경점을 merge한다. git fetch // 코드를 받아온다.
pull과 fetch의 가장 큰 차이는 merge를 하냐 하지 않느냐의 차이입니다. fetch의 경우 코드를 받아온후 즉시 코드를 반영하지 않아, 작업한 코드가 충돌이 일어날경우에 안전하지만, pull은 코드를 받아온후 즉시 merge하여 코드를 반영하기 때문에 충돌이 일어 날수 있습니다. 이 경우 충돌을 해결해주고 다시 commit 하면 문제 없습니다. 해당 내역은 아래에서 조금 더 설명하겠습니다.
Branch 관리하기
코드를 혼자만 사용한다면 꼭 branch를 활용할 필요가 없지만, 같이 관리해야한다면, branch를 나눠서 작업하는것은 좋은 선택입니다.
master에서 branch를 생성하면 master를 기준으로 branch가 생성됩니다. 코드들 기존 master 작업과 분리되며 언제든지 checkout을 통해 master와 branch를 이동하며 코드를 변경할 수 있게됩니다. 작업한 branch 내용을 master와 합쳐야한다면, merge 명령어로 브랜치를 합칠수 있습니다.
그런데 master에서 작업한 내용과 branch에서 작업한 내용이 같을때 merge하게되면 어떻게 될까요?