2013-06-05 6 views
1

나는 우리 지점 dev에 매우 안정되지 것을 깨달았다하고 디버깅 작업에 약간의 변화를 복귀. 다음 다른 사람이 dev에 몇 가지 안전 커밋을 추가했습니다 내가 staged_dev을 디버깅 및 일부 커밋을 추가 한 이후 270329c방법 "- 하드 리셋 자식"는 후 변경 내용을 다시 가져

:

git checkout dev 
git checkout -b staged_dev 
git push origin staged_dev 
# go back to dev 
git checkout dev 
git reset 230086bf429307182ed9b35e19ad2581a3a2baf6 # last known stable state of dev 
git reset --soft [email protected]{1} 
git commit -m "Revert to 230086bf429307182ed9b35e19ad2581a3a2baf6" # this commit SHA = 270329c 
git reset --hard 
git push origin dev 

이 새로운 dev에의 상단에 투입했다. dev에서 270329c을 실행 취소하고 staged_dev의 다른 커밋을 dev에 추가하려면 어떻게해야합니까?

참조 유래 질문 : 일이 그래서 당신은 그것에서 old_dev 분기를 만들 수 있습니다 어디 Revert to a commit by a SHA hash in Git?

답변

1

git reflog 당신을 표시해야합니다.

당신의 단순한 선택이 될 수 reflog, your safety net

+1

한 자식 reflog''에 대한 관심을 호출하기위한 - 개정 역사에 대한 혼란이 있다면 그 핵심이 될 것입니다. 그러나 나는 그것 때문에 @ 범블이 분명하다고 생각한다; 문제는 앞으로 어떻게이 지점들을 합병하는 것을 관리 할 것인가이다. – gcbenison

+0

나는 결과보다는 결과를 가져 오는 방법에 대한 '시험'질문에 단순히 답하고 있었다.) –

0

참조 단지 :

git checkout dev 
git merge staged_dev 
git push origin dev 

당신이 결과로 역사에 만족하지 않은 경우, 먼저 "DEV"의 끝 부분에 수정 된 변경을 리베이스 수 지점 :

git checkout staged_dev 
git rebase dev 
git checkout dev 
git merge staged_dev 

는 "staged_dev"에서 수정 된 커밋이 일에 같은 장소을하려면 전자 역사를 원본 230086 커밋과 마찬가지로, 당신은 더 좋아질 것입니다. "출처"에 이미 게시 된 "dev"의 업데이트 내역을 삭제하지 않고는 수행 할 방법이 없습니다. 당신은 그들이 "DEV"의이 지역의 체크 아웃은 더 이상 상류 역사에있을 수 있다는 것을 모두에게 발표 할 수

git checkout -b new-dev 230086bf # point where "dev" diverged 
git cherry-pick <first commit you want to include*>..staged_dev 
git checkout -t origin/dev 
git rebase new-dev 
git push origin +dev 

: 그건 당신이 정말로 필요하다면, 당신은 뭔가를 할 수 있습니다.