최초 설정의 방법은 아래 사이트에 매~우 자세하게 나와있다.
https://git-scm.com/book/ko/v2/시작하기-Git-최초-설정
나는 위 방법에 따라 이름/이메일을 설정해 주었고,
editor는 vi로 설정했다. (나노가 쉽다고는 하는데, 기능이 쉬운 것부터 배우면 거기에 종속될 것 같았다...)
git을 이용해서 상대방과 페어 프로그래밍을 하려면 이걸 기억 해야하는 것 같다.
- push는 내 repository에.
- pull은 상대방의 repository 것을!
git push <remote_repo> <local_branch>:<remote_branch>
git push는 위 명령어에서 필요 없는 부분이 생략된 것이다.
git push <remote_reop> <branch_name>
은 local과 remote의 branch 이름이 같을 때 사용하면 된다.
git push 했는데 충돌이 생긴 경우에는
- 우선 push 하려고 했던 대상을 pull 함
- 충돌 부분을 VS code등으로 확인한 후, 충돌한 부분을 어떻게 해결 할 것인지 선택
- add/commit/push 재진행
branch의 생성은 다음을 통해 할 수 있다.
$ git checkout -b <branch_name>
branch간 이동은 다음을 통해 할 수 있다.
$ git checkout <branch_name>
local branch 확인은 다음을 통해 할 수 있다.
$ git branch [-r] # -r을 붙이면 remote branch까지 확인
@참고 : branch를 바꾸면 VS code의 내용도 실시간으로 바뀐다
$ git remote add <name> <url>
정확하겐 알 수 없지만 이렇게 추가를 하는 것은 특정 url을 참조 할 수 있도록 지정해주기만 할 뿐, 내용까지 긁어오는 것은 아닌 것으로 보인다. 따라서 내용을 긁어오기 위해서
fetch
를 실행해 주어야 한다.
$ git fetch <remote>
이 방법은 내용은 가져오지만 merge하지 않는다고 한다.
$ git remote update
를 하면 모든 remote 저장소를 fetch 해오는 것으로 보인다.
$ git pull <remote>
pull
은fetch -> merge
를 한번에 실행한다.
참고 사항:
<
git clone
과git remote add
의 차이점>-stack overflow 링크
https://stackoverflow.com/questions/4855561/difference-between-git-remote-add-and-git-clone간략하게 요약하자면
👉git clone은 url에 위치하는 저장소를 copy하여, 새로운 저장소를 만드는 것.
👉git remote add는 git config에 특정 URL의 이름을 기록만하는 것이다.즉, git clone는
$ mkdir foo $ cd foo $ git init $ git remote add origin REMOTEURL $ git pull origin master $ cd ..
이 동작을 연속적으로 시행해준 것과 같다.
tracking branch는 remote branch와 직접적인 연결고리가 있는 local branch라고 한다.
아래 두 링크로 들여다보면 잘 이해가 될 것이다.
- https://devconnected.com/how-to-set-upstream-branch-on-git/
- https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches
👉tracking branch vs local branch vs remote branch특히 remote tracking branch와 upstream branch가 헷갈린다...
이해를 해보자면,
아래 명령어로 특정 remote branch를 tracking하는 branch를 생성 할 수 있다.
git checkout -b <branch> <remote>/<branch>
혹은
$ git push --set-upstream <remote> <local_branch_name>:<remote_branch_name>
을 통해 push와 동시에 특정 local branch가 특정 remote branch를 tracking 하게 할 수 있다.