Git 인터랙티브 리베이스 선택 커밋 없음


105

나는 마스터이고 나는했다 rebase -i <my_branch>

알았어 :

noop

# Rebase c947bec..7e259d3 onto c947bec
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#

일부는 환영받지 못하므로 일부 커밋을 선택하고 싶습니다. 또한 일부 파일을 유지하거나 항상 일부 분기에 '로컬'로 변경하려면 어떻게 작업합니까? 같은 도우미가 .gitignore있습니까?

답변:


85

비대화 형 리베이스처럼 특정 커밋을 리베이스해야합니다.

비대화 형 리베이스를 사용하면 현재 커밋의 직계 조상을 제공하면 아무것도 변경하지 않습니다. 대화 형 리베이스를 사용하면 커밋이 현재 커밋의 직접 조상 인 경우에도 리베이스중인 커밋 후에 커밋을 편집 할 수 있지만 앞으로 편집하려는 커밋을 지정해야합니다.

귀하의 상황에 대한 세부 사항은 모르지만 다음과 같은 것을 원할 수 있습니다.

# Opportunity to edit or prune commits between origin/master and current branch
git rebase -i origin/master

또는

# Edit some of the last ten commits
git rebase -i HEAD~10 # Note that ~10 uses a tilde("~") not a dash("-"_) !

HEAD~*구문을 사용하면 효과가 있었지만 첫 번째 구문은 그렇지 않았습니다.
Dev Yego

25

rebase -i커밋 범위가 없으면 커밋이 표시되지 않습니다. 마지막으로 7 개의 커밋을 리베이스하려면 다음을 사용합니다.

git rebase -i HEAD~7

그러나 이것은 역사를 다시 쓸 것이라는 점에주의하십시오. 커밋이 이미 푸시 된 경우하지 마십시오.


두 번째 질문 : 변경 사항이있는 분기 (기본적으로 구성 분기)를 만들고 다른 분기 정기적으로 병합하십시오 . 이렇게하면 변경 사항이 다른 지점으로 이동하지 않습니다.


9

을 사용할 때 git rebase -i일반적으로 리베이스를 수행 할 커밋을 지정해야합니다. 따라서 예를 들어 현재 브랜치의 마지막 10 개 중 일부 커밋을 제거하려면 다음을 수행합니다.

git rebase -i HEAD~10

6

다른 사람들이 언급했듯이 커밋 범위를 지정해야합니다.

git rebase -i <latest-commit-to-be-retained>

(편집 할 커밋과 동일한 분기에 있다고 가정)-

커밋을 지정하려면 HEAD ~ 5 속기 또는 sha 체크섬을 사용할 수 있습니다 (으로 얻을 수 있음 git log).

사실 모든 커밋은 트리에서 삭제 / 편집 / 변경하려는 커밋의 이전 / 상위 인 경우 수행합니다. 그러면 <latest-commit-to-be-retained>편집기 (git 구성에 정의 됨) 이후의 모든 커밋이 나열됩니다 . 목록에서 커밋을 삭제하려면 해당 행을 삭제하고 파일 + 편집기를 저장하고 종료 (vi habbits :))하고git rebase --continue

두 번째 대답은 knittl에 동의합니다.

변경 사항이있는 분기 (기본적으로 구성 분기)가 있고 다른 분기를 정기적으로 병합합니다. 이렇게하면 변경 사항이 다른 지점으로 이동하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.