[Git - ⑥] 충돌 해결 + SourceTree에서 사용
[Git - ⑥] 충돌 해결 + SourceTree에서 사용
[Git - ⑤] branch + merge, rebase [Git - ⑤] branch + merge, rebase [Git - ④] git reset, revert + SourceTree 사용 [Git - ④] git reset, revert + SourceTree 사용 [Git - ③] git commit [Git - ③] git commit [Git - ②] Git 설정 + 프로젝트
soohykeee.tistory.com
로컬 -> 원격 저장소 올리기
Github에 해당 git-practice repository를 생성해준 후, VS Code를 통해 연동 해주었다.
git remote add origin (원격 저장소 주소)
현재 우리가 작성했던 로컬의 Git 저장소에서 원격 저장소 Github로 연결을 해주는 것이다.
원격 저장소 이름은 흔히 origin으로 사용해준다.
git branch -M main
Github 에서 기본 브랜치명은 main으로 권장되기에 위처럼 작성해줬다.
git push -u origin main
로컬 저장소에서 우리가 커밋했던 내용들을 원격으로 push 해준다.
Github에서 프로젝트 다운받기
아래와 같은 화면에서 만약 Download ZIP을 통해 파일들을 다운받게되면, .git 파일은 없는 것을 확인할 수 있다. 그렇게 되면 우리가 commit 했던 내용들은 볼 수 없는 것이다.
해당 commint 내역까지 모두 다운받고 싶은경우에는 아래의 .git 주소를 복사한 뒤 생성을 원하는 폴더에서 Git Bash 를 실행한 뒤, git clone (원격 저장소 주소) 이렇게 작성해주면 된다.
push, pull
로컬 저장소에서 Tigers.yaml 에서 members에 Evie 추가해준 후, 원격 저장소로 push 해볼 것이다.
성공적으로 원격저장소로 push 된 것을 확인할 수 있다.
이번에는 원격저장소에서의 변경사항을 로컬저장소로 pull 해보겠다.
Github에서 Leopards.yaml의 members에 Dongho 추가해준 후 pull 해주면 된다.
정상적으로 pull 해온것을 확인할 수 있다.
pull 할 내용이 있는데 push를 하면?
로컬 Leopards.yaml 에서 manger를 Dooli로
Github Leopards.yaml 에서 coach를 Lupi로
위처럼 변경해주면 현재 github에 coach가 Lupi로 변경된것이 더 먼저 실행이 됐다고 볼 수 있다. 그렇기에 항상 pull을 통해 최신화 해준 후, push를 해줘야 한다. 그렇게 해주지 않고 git push 를 해주게 되면 제대로 적용이 되지 않는 것을 볼 수 있다.
위 같은 경우 해결방법은 2가지가 있다.
git pull --no-rebase -> merge 방식
git pull --rebase
협업시에는 pull할 때는 rebase를 사용해주는 것이 더 권장된다.
협업상 충돌 발생 해결하기
로컬에서 Panthers에 Maruchi 추가, 커밋 메시지: Add Maruchi to Panthers
원격에서 Panthers에 Arachi 추가, 커밋 메시지: Add Arachi to Panthers
이상태에서 pull을 하게되면 충돌이 발생하게 된다. 위에서 알려준 --no-rebase, --rebase를 사용할 수 있다.
그전에 충돌이 났을 때 처럼 무엇을 반영할건지 설정해준 후, 진행해주면 된다.
로컬의 내역 강제 push 하기
협업을 할 때 강제 push는 권장되지 않는다. 그 이유는 내가 강제로 push 했다가 그 전에 작업했던 내용들이 사라질 수도 있기 때문이다. 그렇기에 해당 방식은 혼자 프로젝트를 진행할 때 어쩔 수 없을 때 사용해주면 된다.
git push --force
로컬에서 브랜치 만든 후, 원격에 push
로컬에서 branch로 from-local을 생성해준 후, push 하면 오류가 발생한다. 원격저장소에 맞는 branch가 없다는 이유의 오류이다.
git push --set-upstream origin from-local
git push -u origin from-local
이렇게 작성해서 원격에 branch 생성 후 연결을 해줄 수 있다.
원격에서 브랜치 만든 후, 로컬에 받아오기
Github에서 from-remote branch 생성 후, 로컬로 받아올것이다.
git fetch 를 통해서 원격에서의 변경사항을 확인할 수 있다.
이제 로컬에 같은 이름의 브랜치를 생성하고 연결해주기 위해서는 아래처럼 작성해주면 된다.
git switch -t origin/from-remote
branch 삭제
SourceTree를 보면 branch들을 확인할 수 있다. main 말고는 더이상 변경사항이 없기에 삭제해줘도 되는 branch들 이다. 이것들을 모두 삭제해보자.
아래와 같은 명령어로 branch를 삭제해줄 수 있다.
git branch -d (브랜치명)
git push (원격이름) --delete (원격의 브랜치명)
모두 삭제되고 main, origin/main 만 남아있는 것을 확인할 수 있다.