2012-11-14 2 views
3

저는 GIT를 처음 접했을 때 어리석은 질문이 있지만 지금까지 나는 이것을 언급 한 게시물이 없다는 것을 조사했습니다. 여기 상황은 다음과 같습니다힘내 : 작업 브랜치에서 파일을 삭제할 때 * git rebase 업스트림/마스터 *를 수행하는 방법?

   A    A' 
upstream/master-+---+----+----+-----+ 
        | 
myworkingbranch  +---+---+--- 
        A B C 

내가 같은 시간에 ... 내 자신의 커밋 B, C를 확인 후, A 점에서 REPO 포크, 원래 REPO는 '그이 커밋합니다. 일반적으로 git rebase를 적용하면 A, 대신 A를 기반으로 B, C, ...를 만들 수 있습니다. 그러나 커밋 B에서는 A '에 남아있는 일부 파일이 삭제되었습니다. 그런 다음 git rebase를 실행할 때마다 삭제 된/제거 된 파일의 충돌이 발생하므로 mergetool 또는 sth else를 통해 수동으로 충돌을 해결해야합니다. , C가 취소 될 것이며 myworkingbranch 캐시에 다시 갈 것을, 자식 REBASE에 의해

  1. B를 저지른 :

    가 나는 두 부분으로 나누어 질문을 보인다 github에의 도움말 페이지에서 얻을 . 이 동안 B에서 삭제 된 파일은 어떻습니까? 그들은 회복 될 것인가? 나는 그것이 문제가 없을 것이기 때문에 그렇게 생각하지 않는다.

  2. 삭제 된 파일이 변경되지 않은 경우 업스트림/마스터에서 커밋 A '를 적용하면 삭제 된 파일이 변경되어 충돌이 발생합니다. 리베이스 할 때마다 충돌을 수동으로 해결해야합니다. 수백 개의 파일이있을 수 있으므로 무서운 것입니다.

Qestion : 업스트림 동안/자동으로 다스 려 변경 사항을 생략 할 수있다, 이제 자식 REBASE의 우아한 방법이 즉, 적용 branchis을 myworking에서 삭제 된 파일로 변경이 포함되어 커밋 마스터 그 삭제 된 파일에? 위에서 언급 한 문제의 두 부분 모두에서?

나는 git merge에서 .gitattribute 파일을 사용하여 업스트림 브랜치의 특정 파일을 생략 할 수 있음을 확인했습니다. git rebase에서 작동할까요? 내가 그 .gitattribute 파일을 커밋을 통해, 말하자면, myworkingbranch에서 D를 추가하면 git rebase가 실행될 때 상태 A가 D가 아닌 캐시에있게되고, 다시는 .gitattribute 파일이 포함되어 있고 패치하는 동안 충돌이 발생하기 때문입니다. on A '

미리 도움을 청하십시오.

답변

2

git rerere을 활성화하고 한 번 충돌 해결을 암기 할 수 있습니다.

이후의 rebase는 동일한 충돌로 중지되지 않습니다. 이 기간 동안


, 어떻게 B에서 삭제 된 파일에 대한? 그들은 회복 될 것인가? 나는 그것이 문제가 없을 것이기 때문에 그렇게 생각하지 않는다.

예, 새로운베이스 (A')의 체크 아웃으로 리베이스가 시작됩니다. 인덱스에 파일이 복원됩니다.
그리고 나서 BC을 적용합니다.

관련 문제