리베이스 (rebase)를하고 충돌을 다시 해결해야합니다. 이것은 단순하거나 약간 더 복잡 할 수 있습니다. 단순한 경우 병합을 리베이스하고 삭제 된 파일을 수정하지 않아도됩니다. 이것을 시도하십시오 :
git rebase -i HEAD~1
각 커밋에 무엇을하고 싶은지 묻는 화면이 나타납니다. 편집, 저장하고 편집기를 종료
pick bb009b7 merge commit
# Rebase 9775146..bb009b7 onto 9775146
#
# 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
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
변경 선택 : 뭔가 같은 것입니다. 이제 병합 커밋으로 돌아 왔습니다. 실행 :
git checkout <id of the previous commit> <filename>
git commit --amend
git rebase --continue
해결해야합니다. 그렇지 않은 경우 더 이상 뒤로 가야하며 더 복잡 할 수도 있습니다.
나는 이런 식으로 뭔가를 갈 것이라고 생각합니다 : 당신은 각 커밋에 수행 할 작업을 묻는 화면이 나타납니다
# rebase the last three commits, assuming:
# the oldest is your most recent changes
# the next is your co-worker's
# the last is the merge
# You can probably go back only two but I generally
# go back one extra just to see that things are as I
# expect.
git rebase -i HEAD~3
. 그대로
pick 8d25cf0 Your changes
pick e9ddd29 His changes
pick bb009b7 merge
# Rebase 9775146..bb009b7 onto 9775146
#
# 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
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
이 첫 번째 줄을 남겨 : 그것은 무언가 같이 될 것입니다. 두 번째 선택을 수정하여 편집하십시오. 마지막으로 편집하고 싶다고 생각합니다.
이것을 쓰고 저장하면 rebase가 시작됩니다. 첫 번째 커밋을 통해 실행되고 두 번째 커밋에서 중단됩니다. 파일이 누락되었습니다. 이제 다음을 실행하고 싶습니다.
git checkout <id of the previous commit> <filename>
그러면 동료가 삭제 한 파일이 복원됩니다.
는 다음과 같이 실행 :
git commit --amend
git rebase --continue
그냥 예상대로 일이 있는지 확인하십시오 커밋 병합에 도착하면. 파일이 누락 된 경우 다시 체크 아웃하십시오. 그런 다음 수정하고 계속하십시오. 이제는 필요한 모든 것을 갖추어야합니다.
당신이 일이 어떤 점
git rebase --abort
에서 잘못 가고있다 생각한다면 이것은 당신이 시작한 곳으로 다시 넣을 것입니다 당신이 다시 시도 할 수 있습니다.
그래서 내가 말하려는 것은 리베이스 (repase)하고 원격 리포 (repo)를 강요하고 관련된 모든 사람들에게이 브랜치를 버리고 다시 가져올 필요가 있다는 것입니다. –
파일이없는 히스토리에 커밋을하는 것이 문제가 아니라면 현재 커밋에서'git checkout'을 시도해 볼 수 있습니다. –
Ilion
나는 그 파일들의 역사를 가지고 싶기 때문에 일을 시작하자마자 rebase를 먼저 시도 할 것이다. –