2011-07-26 8 views
5

동료가 git 저장소에 실수를했습니다. 일부 업데이트 된 코드를 커밋하고 싶지만 git을 가져 오지 않았으므로 결과적으로 HEAD 뒤에 1 커밋이됩니다. 내가 뒤에서 그의 변화를 완전히 무시하고 그의 실수를 무시할 수 있습니까?이전 git 커밋을 완전히 덮어 쓰기

+0

처음으로 이전 버전으로 되돌립니다. 그런 다음 변경 사항을 커밋하십시오. – Randy

+0

git 서버에 액세스 할 수있는 권한이 있습니까? –

+0

예, 액세스 권한이 있습니다. – pqn

답변

6

나는 그가 푸시 중앙 repo에 나쁜 커밋을 의미합니다.

그렇다면 git push -f을 사용하여 버전을 푸시 할 수 있습니다. 그러면 저장소가 무시됩니다. 물론 이것은 동료 (들)가 중앙 저장소를 다시 복제해야하므로 기록 (f을 의미합니다)을 깨뜨릴 것입니다.

+5

동료가 다시 복제 할 필요가 없습니다. 그에게 'git fetch; git rebase origin/master '또는 간단히'git pull --rebase '를 사용하십시오. 그 후에 그는 자신의 커밋을 수정하거나 완전히 제거해야합니다. – cmcginty

8

다른 답변과 마찬가지로 강제로 밀어 넣을 수 있지만 더 안전한 방법은 변경 사항을 가져 오는 것입니다. git revert 그의 커밋은 변경 사항을 완전히 취소합니다. 이로 인해 실수로 변경 사항이 손실 될 위험이 없습니다.

git pull 
git revert <treeish naming his commit> 
git push 
+0

컴파일 된 파일을 추가하지 못하도록 .gitignore 파일을 추가하는 것을 잊었습니다. 병합 충돌을 해결하는 방법을 잘 모르겠습니다. – pqn

+1

두 개 이상의 팀에서 모든 종류의 소스 컨트롤을 사용하는 경우 다른 작업을 수행하기 전에 병합 충돌을 조사하는 것이 좋습니다. 그들을 해결하는 것은 정기적이고 필수적인 활동입니다. Git에는 크로스 플랫폼 충돌 해결 도구 인 kdiff3이 기본 제공됩니다. 그것을 시작하는 것이 좋은 출발이 될 것입니다. 나는 Git에 대한 일련의 기사를 작성했으며, 하나는 [병합 충돌을 안내한다] (http://shotgunsandpenguins.blogspot.com/2009/07/journey-to-git-part-v-merging.html). 좀 봐봐. –