development

한 분기에서 어떤 커밋이 다른 분기에 없는지 확인하는 방법은 무엇입니까?

big-blog 2020. 5. 27. 08:16
반응형

한 분기에서 어떤 커밋이 다른 분기에 없는지 확인하는 방법은 무엇입니까?


두 가지 develnext있습니다. 드디어 나는 다소 많은 양의 커밋을 가지고 있습니다. 커밋 중 일부는에서 선택되었습니다 next. 또한 다음에 커밋을 추가했습니다 devel.

이제 무엇이 빠졌는지보고 싶기 next때문에 변경 사항을 자세히 테스트 할 수 있습니다 next. 내 질문은 지금 어떤 커밋이 devel다음에 아닌지 어떻게 알 수 있습니까?


거의 사용 git cherry하지 않는 명령 은 아직 체리 피킹되지 않은 커밋을 보여줍니다. 에 대한 설명서 git cherry여기 에 있지만 간단히 말해 다음을 수행 할 수 있습니다.

git checkout devel
git cherry next

... 그리고 다음과 같이 약간의 출력을 참조하십시오.

+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9

로 시작하는 커밋은 +당신이 그 사람이 될 것이다 아직하지 않은 에 벚꽃이 고른 next. 이 경우 지금까지 단 하나의 커밋을 선택했습니다. -v매개 변수를 git cherry명령 에 추가하여 각 커미트의 제목 행을 출력 할 수도 있습니다.


또한 사용할 수 있습니다

git log --left-right --graph --cherry-pick --oneline devel...next

분 기간에 공유되지 않은 실제 다른 커밋 목록을 가져옵니다 .

작동 단어는 --cherry-pick

--cherry-pick

커밋 세트가 대칭 차이로 제한되는 경우 "다른 쪽"의 다른 커밋과 동일한 변경을 일으키는 커밋은 생략하십시오. 예를 들어, A와 B라는 두 개의 분기가있는 경우 해당 옵션의 설명에있는 위의 예와 같이 한쪽에 만 모든 커밋을 나열하는 일반적인 방법은 --left-right입니다. 그러나 다른 브랜치에서 체리 피킹 된 커밋을 보여줍니다 (예 : "b의 3rd"는 브랜치 A에서 체리 피킹 될 수 있음). 이 옵션을 사용하면 이러한 커밋 쌍이 출력에서 ​​제외됩니다.

업데이트 로이 코멘트에 언급, 자식의 최신 버전은 추가 --cherry-mark:

--cherry-mark

--cherry-pick (아래 참조)과 같지만 동등한 커밋은 생략하지 않고 =로 표시하고 +는 +와 동일합니다.


자식 로그 서브셋을 시도해 볼 수 있습니다.

git log --oneline devel ^next

어때요?

git log next..devel

결과는 Byran의 답변 (커밋 순서가 다름)과 비슷하지만 두 답변 모두 지점마다 다른 커밋을 생성합니다. 단지 다른 지점이 아닌 다른 지점이 아닌 것을 보여줍니다.


릴리스 브랜치 (다음)에 통합되지 않은 커밋 목록을 얻으려면 다음을 사용할 수 있습니다.

git rev-list --reverse --pretty="TO_TEST %h (<%ae>) %s" --cherry-pick --right-only origin/release_branch...origin/development_branch | grep "^TO_TEST " > NotIntegratedYet.txt

자세한 내용은 git-rev-list확인하십시오 .

참고 URL : https://stackoverflow.com/questions/7566416/how-to-see-which-commits-in-one-branch-arent-in-the-other

반응형