git remote
- 원격 저장소를 관리한다.
어? 페어가 도망가버렸어! 내 코드 어떡하지?
git remote add : 깃헙 레포지토리에 빨대를 꼽는다.(통로)
git pull : 원격 저장소에서 로컬 저장소로 변경사항을 다운로드한다.
git remote rm : 원격 레포지토리가 로컬 레포지토리에서 제거된다. 이를 통해 원격 레포지토라와의 연결이 해제되며, 더 이상 해당 원격 레포지토리로부터 데이터를 가져오거나 푸시할 수 없다.(빨대를 치운다)
git remote add로 페어 레퍼지토리 연결 → git pull로 로컬로 가져오기 → git remote rm으로 통로 제거 → 내 레포지토리 연결 → git push로 받은 코드 레포지토리에 올리기
git commit --amend
어? 커밋을 잘못했어 어떡하지?
새롭게 변경한 사항을 이전 커밋에 덮어씌우고싶다.
- ammend를 수행한 커밋은 기존 커밋과 완전히 다른 별개의 커밋이 된다.(해시값이 다르다.) → 다른 작업자가 작성한 내용에 대해서 ammend 옵션을 사용하면 커밋 해시값이 완전히 바뀌기 떄문에 원격 저장소를 push하면 충돌이 난다.
- 다른 작업자가 작성한 내용이나 push를 수행한 커밋에 대해서는 amend 옵션을 사용하지 말자
git cherry-pick
어? 브랜치를 변경하지 않고 작업을 진행해버렸어 어떡하지?
실수로 브랜치를 변경하지 않고 커밋을 해서 커밋 내용을 다른 브랜치로 옮기고 싶다.
1. B2, B3, B4를 다른 브랜치로 옮기고 싶다.
2. 브랜치를 새로 만든다.
git checkout -b feature2
3. 원하는 커밋을 특정 브랜치로 옮긴다.
git cherry-pick B2 B3 B4
...을 통해서 처음 것과 끝에 것을 연결하면 연속된 커밋을 모두 가져올 수 있다.
git cherry-pick B2...B4
git merge, git rebase
어? 작업중인데 기존 코드를 변경하라고 하네? 어떡하지?
로컬에서 작업 중이었는데 기존 브랜치에서 설계 상 변경된 부분이 있어서 이를 적용해야한다. 기존 작업 내용은 유지하며 변경된 부분을 적용하고 싶다.
feature : A1에 이어서 B1, B2, B3 커밋한 브랜치
기존에 있던 코드에서 변경되어서 A`1이라는 커밋이 생김. 저 커밋을 지금 작업하는 곳에 작업하고 싶다.
merge라는 명령어를 사용한다.
git merge A`1
git merge main
merge를 하면 변경 내역을 위한 커밋이 한 번 더 남는다.
branch를 깔끔하게 만들려면 rebase라는 명령어를 사용할 수 있다.
(feature2) git rebase main
// 충돌나면 해결 후 git add
(feature2) git switch main // head가 가리키는 브랜치 변경
(main) git merge feature2
→ 한 줄로 예쁘게 브랜치가 만들어진다.
'Git&GitHub' 카테고리의 다른 글
[Git] Commit Message Conventions (0) | 2024.10.24 |
---|---|
[Github Error] The requested URL returned error: 403 (0) | 2024.10.03 |
Introduction to Git and GitHub - 모듈 2(Branching and Merging) (0) | 2024.06.24 |
Introduction to Git and GitHub - 모듈 2(Undoing Things) (0) | 2024.06.24 |
Introduction to Git and GitHub - 모듈 2(Advanced Git interaction) (0) | 2024.06.24 |