📝 목록
- github 사용법 요약
- 반찬
- VSCode에서 Git 연결하기
- VSCode에 리포지토리 Clone하기
- 서로 다른 작업자가 다른 시간에 협업하기
- 서로 다른 작업자가 같은 시간에 협업하기
- 충돌 ⭐️
github 사용법 요약
- 내 컴퓨터에 저장소를 만듭니다.
- 커밋합니다.
- 원격 저장소를 만듭니다.
- 지역저장소와 연결합니다.
- 푸쉬합니다.
- 원격 저장소를 새로운 지역저장소로 복제합니다.
반찬
01. VSCode에서 Git 연결하기
- 로컬에서 리포지토리(폴더) 만들기
- vscode에서 폴더 열고 source control 탭에서 initial
- 파일 만들기
- source control 탭에 가보면 changes에 새로 만든 파일 있음.
- + 눌러서 stage에 add
- commit massage 쓰고 체크 눌러서 commit
- 깃헙에서 리포지토리 만들기, https 복사
- source control 탭의 땡떙땡 누르고 add remote
- 주소 붙여넣기 -(엔터)-> 원격 이름 짓기
- push
- 깃헙 보면 다 파일 올라가있음.
02. VSCode에 리포지토리 Clone하기
- 리포지토리 https 주소 복사
- vscode 새 창 열기
- source control 탭에서 Clone Repository 클릭
- 복사한 주소 붙여넣기
- 로컬에 저장할 폴더 선택 또는 생성 후 선택
- 열어보면 잘 clone된 걸 확인할 수 있음.
03. 서로 다른 작업자가 다른 시간에 협업하기
- 같은 리포지토리에 연결된 여러 로컬들
- 1번 로컬에서 파일을 commit하고 push하면
- 2번 로컬은 source control 탭의 땡땡땡을 누르고 pull 클릭해 pull한다.
- 그럼 버전이 같아짐.
- 그리고 자기 할 일 하기
+) 설정에서 autofetch를 true로 해놓으면 pull해야하는지 알 수 있음. 아니면 git graph에서 구름 다운로드 모양 누르셈.
여전히 내 로컬저장소 버전은 R1이지만 원격저장소는 L2로 한 버전 앞서있다는 것을 알려줌.
=> 글쿤! 하고 pull하면 됨.
04. 서로 다른 작업자가 같은 시간에 협업하기
- L이 이미 push했는데 pull하지 않고 작업한 걸 push하면 reject됨.
최신 버전은 하나야 둘이 될 수 없어.
- pull하고 내꺼 push하면 merge commit이 됨.
L이 한 작업과 R이 한 작업이 다 들어있는채로(병합된채로) LR이라는 새로운 이름의 버전으로 merge commit이 push됨.
- 그리고 L은 다음 작업할 때 pull하고 하면 됨.
+) push 전에 pull하는 습관!
05. 충돌 ⭐️
- 같은 파일을 같은 부분을 다른 사람이 동시에 고쳐서 나중에 하는 사람이 pull하면 충돌남.
- 충돌 나는 부분 고치고 (git mergetool 사용해서 비교해도 됨)
- stage에 올리고 체크 누르면 됨.
(BASE에서 수정한 부분을 알아서 수정해주지만 여러 로컬에서 같은 부분이 수정됐다면 충돌남. - 3way)
Head는 working directory가 어떤 버전과 같은지를 가리킨다.
master는 마지막 commit을 가리킨다.
Head는 현재 commit을 가리킨다.
-
git log 보기
git log
git log --oneline : head를 밑으로 그 부모들을 보기 때문에 head 밑으로만 나옴.
git log --oneline --all : head 위도 다 볼 수 있음
git log --oneline --all --graph : 그래프처럼 보기
-
내 로컬 저장소 어디 보고 있는지: head
-
checkout은 head를 옮긴다.
원하는 곳에 checkout하면 거기로 시간 여행
-
시간 여행 끝내고 다시 돌아와서 작업을 재개할 때
- git checkout [commit_id] : head가 master를 가리키지 않고 예를 들어 v3를 가리킴. 그 버전으로 체크아웃 => Detached head state
=> 새로 commit하면 master는 이전 버전을 가리키고 head만 새로운 버전을 가리킴. 날라갈 수 있음.
=> 실험적인 작업을 하고 버리기에 유용함. 버릴 때 걍 git checkout master 하면 되는 것.
(if 실험이 성공한 경우)
"master"처럼 예를 들어 "exp"라는 branch를 하나 더 만들고 git checkout master와 exp를 왔다리 갔다리 하면 됨.
(master로 exp 병합하는 법)
exp 우클릭 & merge into current branch -> master와 exp에서 작업한 내용이 모두 master에.
exp도 원격저장소에 올리고 싶으면 exp에 checkout branch하고 push하면 branch도 깃헙에 올라가는데, 실험적인 가지니까 굳이 올릴 일은 거의 없다.
- git checkout master : head가 master를 가리킴.
로 돌아오면 되지. => Attached head state
보통 2번 함. GUI로 하려면 브랜치 master 뱃지에 우클릭해서 checkout branch 로 체크아웃
-
+)
- remote tracking branch (origin)
- origin/master라는 브랜치는 git이 만든 브랜치로, 원격저장소의 현재 버전(?)이라고 할 수 있고 그냥 master는 로컬 저장소의 최신 버전.
- pull = fetch + merge 이므로 pull을 하나 fetch하고 merge into branch (master에)
- 팀원이 서로 다른 파일을 수정해야 conflict가 날 확률이 적다.
최근에 git checkout 이 git switch/ restore로 변경되었습니다!
한번 보면 좋을 것 같아요~