programing

하나의 분기에 대한 커밋 기록을 가져오는 방법은 무엇입니까?

testmans 2023. 7. 19. 21:14
반응형

하나의 분기에 대한 커밋 기록을 가져오는 방법은 무엇입니까?

새 분기를 만들었다고 가정해 보겠습니다.my_experiment부터master그리고 몇 번이나 약속을 했습니다.my_experiment내가 만약에git log언제my_experiment나는 이 지점에 대한 커밋뿐만 아니라 다음 지점에 대한 커밋도 봅니다.master이전에my_experiments분기가 생성되었습니다.

나는 모든 커밋의 기록을 보는 것이 매우 유용하다고 생각합니다.my_experiments분기가 해당 분기의 생성에 도달할 때까지 분기 - 사실상 해당 분기의 실제 내역입니다.그렇지 않으면 로그를 볼 때 커밋이 위에 있었는지 확실하지 않습니다.my_experiments지점이든 아니든

Git으로 이것을 할 수 있는 방법이 있습니까?

범위를 사용하여 이 작업을 수행할 수 있습니다.

git log master..

체크아웃한 경우my_experiment분점.이것은 어디에 비교할 것입니다.master에 있음HEAD(의 일각)my_experiment).

참고: 해당 로그를 마지막 n개의 커밋(예: git log -3)으로 제한하는 경우 'n'과 분기 사이에 공백을 두어야 합니다.

git log -3 master..

Git 2.1(2014년 8월) 이전의 오류:git log -3master..실제로 현재 분기의 마지막 3개 커밋을 보여줍니다(여기).my_experiment), 무시합니다.master제한(경우를 의미)my_experiment하나의 커밋만 포함하고, 3개는 여전히 나열되며, 그 중 2개는master)

주니오 C 하마노()gitstercommit3fa568 참조:

revision: 구문 분석 "git log -<count>좀더 신중하게

잘못 입력된 명령줄은 "master그리고 결국 현재의 커밋 두 개를 보여줍니다.HEAD:

$ git log -2master

우리가 먹이를 주기 때문에"2master에게atoi()전체 문자열이 정수로 구문 분석되는지 확인하지 않습니다.

사용strtol_i()대신 도우미 기능을 사용합니다.

git merge-base명령을 사용하여 공통 조상을 찾을 수 있습니다.따라서 my_experiment가 아직 master에 병합되지 않았고 mysperiment가 master에서 생성된 경우 다음과 같이 처리할 수 있습니다.

git log --oneline `git merge-base my_experiment master`..my_experiment

제 생각에 당신의 목적을 위한 것입니다.git log --oneline --decorate이렇게 하면 스토리 라인에 있는 각 분기에 대해 선택된 커밋과 상위 커밋을 알 수 있습니다.이렇게 하면 보고서의 구조와 특정 분기와 관련된 커밋을 볼 수 있습니다.이것을 읽는 것이 도움이 될 것 같습니다.

사용할 수 있는 항목은 다음과 같습니다.git log --oneline

이번엔 너무 늦은 거 알아요하지만 여기 여러분이 찾고 있던 것을 얻을 수 있는 (그렇게 간단하지는 않은) 한 줄이 있습니다.

git show-branch --all 2>/dev/null | grep -E "\[$(git branch | grep -E '^\*' | awk '{ printf $2 }')" | tail -n+2 | sed -E "s/^[^\[]*?\[/[/"
  • 지점 이름과 실제 지점 상태에 대한 상대적 위치를 가진 커밋을 다음과 같이 나열하고 있습니다.git show-branch를 (으)로 합니다./dev/null).
  • 저희 곳만 에 있는 하고 있습니다.grep -E "\[$BRANCH_NAME".
  • 실제의 경우$BRANCH_NAME는 로얻 수있 다니습으로 얻어집니다.git branch | grep -E '^\*' | awk '{ printf $2 }'(별이 있는 가지, 그 별 없이 메아리칩니다.)
  • 에서, 는 우의결과터부, 는처중제라다거니합인을로 시작하는 합니다.tail -n+2.
  • 으로 앞에 있는 모든 합니다.[$BRANCH_NAME]와 함께sed -E "s/^[^\[]*?\[/[/".

다음 명령을 사용하여 분기별 로그를 볼 수 있습니다.

명령 구조:

git log <branch_name>

예: 지점 이름이 개발된 경우 명령은 다음과 같아야 합니다.

git log develop

언급URL : https://stackoverflow.com/questions/16974204/how-to-get-commit-history-for-just-one-branch

반응형