git에서 커밋 사이를 앞뒤로 어떻게 이동합니까? 알고 있지만 다음과 같이 앞으로 나아갈

나는 a를 git bisect하고 있고 문제가있는 커밋에 도착한 후 이제 올바른 커밋에 있는지 확인하기 위해 앞으로 / 뒤로 단계를 시도하고 있습니다.

나는 HEAD^역사에서 뒤로 돌아가는 것을 알고 있지만 다음과 같이 앞으로 나아갈 수있는 또 다른 지름길이 있습니다.

A - B - C(HEAD) - D - E - F

내 목표가 F 라는 것을 알고 C 에서 D 로 이동하고 싶습니다 .


참고 : 이것은 Git : 커밋 사이에서 앞뒤로 이동하는 방법 의 복제본이 아닙니다. 내 질문은 약간 다르며 거기에 답변이 없습니다.



답변

나는 약간의 실험을 해왔고 이것은 앞으로 탐색하는 트릭을하는 것 같습니다 ( 편집 : 병합 커밋이없는 선형 기록이있을 때만 잘 작동합니다) :

git checkout $(git rev-list --topo-order HEAD..towards | tail -1)

towards커밋 또는 태그의 SHA1은 어디에 있습니까 ?

설명:

  • 내부 명령 $()은 다음을 의미합니다. 현재 HEAD와 커밋 사이의 모든 커밋을 가져 오고 towards(제외 HEAD) 우선 순위로 정렬 한 다음 ( git log기본적으로 이상하게 기본값 인 시간순 대신 rev-list), 마지막 커밋 을 취합니다. ( tail), 즉 우리가 가고자하는 것.
  • 이것은 서브 쉘에서 평가되고 git checkout체크 아웃을 수행하기 위해 전달됩니다 .

.profile특정 커밋으로 이동 하기 위해 파일 에서 매개 변수 예상 별칭으로 액세스 가능한 함수를 정의 할 수 있습니다 .

# Go forward in Git commit hierarchy, towards particular commit
# Usage:
#  gofwd v1.2.7
# Does nothing when the parameter is not specified.
gofwd() {
  git checkout $(git rev-list --topo-order HEAD.."$*" | tail -1)
}

# Go back in Git commit hierarchy
# Usage:
#  goback
alias goback='git checkout HEAD~'

답변

머리 상태가 분리되지 않고 명확 해지기 위해 필요한 것은 체크 아웃이 아니라 재설정하는 것입니다.

git reset HEAD@{1}

답변

나는 당신이 할 수 있다고 믿습니다.

git reset HEAD@{1}

제 시간에 한 커밋을 진행합니다. 여러 커밋을 진행하려면 HEAD @ {2}, HEAD @ {3} 등을 사용하세요.


답변

이것이 제가 앞뒤로 탐색하는 데 사용하는 것입니다.

다음 커밋으로 이동

function n() {
    git log --reverse --pretty=%H master | grep -A 1 $(git rev-parse HEAD) | tail -n1 | xargs git checkout
}

이전 커밋으로 이동

function p() {
    git checkout HEAD^1
}

답변

F가 trunk(여기에 자신의 브랜치 이름을 입력하십시오) 에 대한 최신 커밋이라고 말 하십시오 … trunk~0(또는 그냥 trunk), E를 trunk~1, D trunk~2등 으로 참조 할 수 있습니다 .

커밋 이름을 지정하는 더 많은 방법에 대해서는 리플 로그 를 살펴보십시오 .


답변

뒤로 이동하는 것은 나무 아래로 이동하기 때문에 사소하며 항상 한 가지 방법이 있습니다.

  function git_down
        git checkout HEAD^
  end

앞으로 순회 할 때 트리 위로 이동하므로 대상 분기를 명시해야합니다.

  function git_up
        git log --reverse --pretty=%H $argv | grep -A 1 (git rev-parse HEAD) | tail -n1 | xargs git checkout
  end

사용법 : git down,git up <branch-name>


답변

앞을보고 싶다면 Git에 엄격한 명령이 없기 때문에이 트릭을 수행 할 수 있습니다.

git log --reverse COMMIT_HASH..

로그 기록 해시 목록 :

A
B
C -> put this
D

명령을 사용 git log --reverse C..하면 출력에 BA 가 표시됩니다 .


이 글은 Git 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.