1. Git Repository fork 합니다.
내가 pull request 를 요청할 타겟 리포지토리를 내 GitHub 으로 복제하는 겁니다.

2. 내 GitHub 에 fork 된 repository 를 내 컴퓨터 (로컬) clone 합니다.
git clone
3. 새로운 기능를 담을 branch 를 생성합니다.
git checkout -b new_feature
4. 변경 사항을 저장하고, 커밋합니다. 원격(나의 repository 에 있는, new_feature branch 에 현재 push 됩니다.
git add .
git commit -m "풀리퀘스트 할 커밋"
git push
5. 원격 저장소의 관리자가 branch 를 merge 할지 검토합니다.
이번 경우에는 팀장인 제가 pull request 를 검토했습니다.
별 이상이 없다면, merge pull request 하면 됩니다.
merge 가 완료되어 더이상 해당 branch 가 필요하지 않다면 delete 하면 됩니다.

5-1. Changes Pull request 중에서도 원격의 코드와 conflict 가 날 수 있습니다. 이러한 경우에는 반려를 해야합니다.
Request changes 를 통해, conflict 가 난 commit 을 변경하도록 합니다.

로컬에서 반려 당한 pull request 수정하기
- 로컬 저장소 업데이트: 먼저 로컬 저장소를 최신 상태로 만들어야 합니다. 이를 위해 원격 저장소에서 최신 변경사항을 가져와야 합니다.
⠀git fetch origin
- 충돌이 있는 브랜치 체크아웃: 충돌이 있는 PR의 브랜치로 체크아웃합니다.
git checkout <branch-name> `
- 대상 브랜치와 병합 또는 리베이스: 일반적으로 PR은 'main' 또는 'master' 브랜치와 병합하려고 할 때 충돌이 발생합니다. 따라서 해당 브랜치로부터 최신 변경사항을 현재 브랜치로 병합하거나 리베이스해야 합니다.
병합을 사용할 경우:
git merge origin/main
리베이스를 사용할 경우:
git rebase origin/main
여기서 main은 대상 브랜치의 이름이며, 다를 수 있습니다.
TODO: Rebase merge 간의 차이가 궁금합니다.
#git/궁금한것
충돌 해결: 병합이나 리베이스 과정에서 충돌이 발생하면, 이를 해결해야 합니다. 텍스트 에디터를 사용하여 충돌이 발생한 파일들을 열고 충돌을 수동으로 해결합니다. 충돌이 해결된 후에는 변경사항을 저장하고 파일을 닫습니다.
변경사항 커밋: 충돌을 해결한 후에는 변경사항을 커밋해야 합니다.
git add . git commit -m "Resolve merge conflicts"
변경사항을 원격 브랜치에 푸시: 충돌을 해결하고 커밋한 후에는 변경사항을 원격 저장소의 해당 브랜치에 푸시합니다.
git push origin <branch-name>
여기서
이러한 단계를 따르면 GitHub에서 'Request Changes' 상태인 PR에 대한 충돌을 로컬에서 해결하고 다시 원격 저장소에 반영할 수 있습니다.
git checkout 중 에러 확인
error: pathspec 'openmpy2' did not match any file(s) known to git
해당 에러는 로컬 저장소의 git과 리모트 저장소의 git 정보가 동기화 되지 않아서, 새로 만들어진 리모트 저장소 브랜치를 참조할 수 없기에 발생하는 에러입니다.
그러므로 git remote update 로 원격 브랜치를 업데이트 한 뒤 checkout을 실행하면 잘 동작합니다.
git remote update
git checkout <브랜치명>
출처
https://www.freecodecamp.org/korean/news/git-fetch-vs-pull/
https://stackoverflow.com/questions/5989592/git-cannot-checkout-branch-error-pathspec-did-not-match-any-files-kn
https://devcamus.tistory.com/8#error%-A%C-%A-pathspec%C-%A--refactoring-%C-%A-did%C-%A-not%C-%A-match%C-%A-any%C-%A-file-s-%C-%A-known%C-%A-to%C-%A-git
댓글