2013-08-27 1 views
0

Git 저장소에 코드를 추가했습니다. 그러나 다른 팀이 내 새 파일과 변경 사항을 삭제하고 코드를 삭제 한 버전을 커밋했습니다. 나는 나의 옛 커밋으로 되돌아 가서 나의 변화를 다시 합쳐서 되돌려 놓으려고했으나 효과가 없다. 나는 코드가 삭제 된 새로운 버전이 있다는 사실은 repo가 ​​그 코드를 더 이상 받아들이지 않기를 원한다는 것을 의미합니다.Git에 코드를 어떻게 재 도입합니까?

이전 코드를 가져 와서 repo에 다시 소개하려면 어떻게해야합니까?

+0

오류가 무엇을? 이유에 대해 다른 팀과 이야기하는 것이 가장 좋습니다. 이전 커밋을 다시 체크 아웃하고 병합 충돌을 수동으로 해결해야 할 수도 있습니다. – jev

+0

그들은 파일을 삭제했습니다. 그들은 나와 같이 저 지르게 아주 새롭다. 나는 분명히 내가 소개 한 모든 파일을 삭제할 필요가 없었기 때문에 99 %의 오류라고 확신했다. – Joe

답변

2

코드가 이전에 추가되고 제거 되었기 때문에 코드가 다시 추가되는 것을 막을 수있는 것은 아무것도 없습니다. 변경하려면 git add을 입력하고 git commit을 변경하면됩니다.

3

힘내 기 때문에 파일이 다시 추가되지 않습니다. 오히려 현재 분기 팁의 조상 인 커밋을 병합하려고하는 것처럼 들립니다. 이것은 커밋이 이미 병합되었으므로 힘내에서 아무 것도하지 않습니다.

대신 코드를 삭제 한 변경 사항을 부분적으로 되돌리려는 것 같습니다.

변경 사항을 제거 커밋 ID를 알고 있다고 가정하면 :

git revert --no-commit $COMMIT 

이 특정 역방향 커밋하고 변경 사항을 무대 적용됩니다. 모든 변경 사항을 취소하므로 아직 커밋하지 마십시오. 먼저 커밋에 도입 된 합법적 인 변경 사항을 취소해야합니다.

확인 git status 다음은 하지git reset $FILE를 사용하여 되돌리려 할 각 파일을 다시 설정합니다. 이렇게하면 해당 파일의 모든 변경 사항이 무대화됩니다. (그것은 작업 디렉토리에 파일을 복원하지됩니다.)

당신은 부분적 파일 (일부 해당 파일의 변경이 아닌 다른 사람을 제거)를 되돌려 야하는 경우 git reset --patch $FILE를 사용하여 만든 각 변화를 묻는 메시지를 표시하는 그 파일에 이 수행하는 변경 사항을 모두 버려은 커밋에서 그대로 유지하려고합니다.

언제든지 git diff --cached을 사용하여 현재 커밋이 변경 될 것을 알 수 있습니다. diff가 삭제 된 파일의 복원을 반영 할 때 결과를 커밋하고 잘못된 커밋에서 잘못 수정 된 모든 변경 사항을 커밋합니다.

0

그럴 수 단순히 cherry-pick 당신의 코드를 도입 커밋 :

mkdir test 
cd test 
git init 
echo "foo" > foo.txt 
echo "bar" > bar.txt 
git add foo.txt; git commit foo.txt -m "added FOO" 
git add bar.txt; git commit bar.txt -m "added BAR" 
git rm foo.txt; git commit foo.txt -m "removed FOO" 
# the next line will recreate the deleted 'foo.txt' 
#  by cherry-picking the commit that created it 
git cherry-pick HEAD~2 
관련 문제