git을 사용할 때 병합으로 가져온 모든 커밋을 무시하면서 브랜치에 대한 커밋을 표시하는 방법이 있습니까?
병합 된 다른 브랜치에서 만든 코드 변경 사항을 무시하면서 브랜치에서 만든 코드 변경을 검토하려고합니다. 그런 방식으로 차이를 표시하는 것이 거의 불가능하다는 것을 알고 있지만 할 수 있기를 바랍니다. 검토해야 할 커밋을 찾으십시오.
답변:
--no-merges
두 부모 모두 git의 여러 상황에서 동일한 가중치를 갖습니다. 다른 변경 사항을 병합하는 데 항상 일관성이 있었다면 이것이 원하는 것을 제공한다는 것을 알 수 있습니다.
git log --no-merges --first-parent
그렇지 않으면 다른 명명 된 분기에서 커밋을 제외 할 수 있습니다.
git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3
주 브랜치로 다시 병합 할 변경 사항을 검토하려는 경우 가장 쉬운 방법은 로컬 복제본에서 병합을 수행 한 다음 병합을 게시하기 전에 첫 번째 부모와의 차이점을 확인하는 것입니다.
git cherry
이를 위해 사용할 수 있습니다. 아직 업스트림에 병합되지 않은 커밋 또는 한 브랜치에는 있지만 다른 브랜치에는없는 커밋을 찾을 수 있습니다. 따라서 "your-branch"및 "master"라는 두 개의 분기가 제공됩니다.
git cherry -v your-branch master
패치 ID와 비교하여 커밋 목록을 표시합니다.
+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake
접두사가 "-"인 커밋은 두 브랜치 모두에 나타나는 반면, "+"접두사가 붙은 커밋은 브랜치에서만 사용할 수 있습니다.
대안으로 다음을 사용할 수 있습니다.
git log --pretty=format:"%h %s" your-branch..master --no-merges
"마스터"에 아직 존재하지 않는 "당신의 브랜치"에서 수행 된 커밋 목록을 보여줍니다.