충돌하는 Git rebase 도중에 "그들의"변화를 얻는 방법?


349

충돌하는 분기가 있습니다. branch2는 branch1에서 분기되었습니다.

branch2current를 기반으로 할 때 branch1충돌을 해결하면서 "그들"(즉, ) 파일 의 일부 를 그대로 사용하기로 결정합니다 branch1. 어떻게합니까?

나는 시도했다 :

git checkout branch1:foo/bar.java
fatal: reference is not a tree: TS-modules-tmp:foo/bar.java

git checkout refs/heads/branch1:foo/bar.java
fatal: reference is not a tree: refs/heads/TS-modules-tmp:foo/bar.java

41
참고 : branch2에 branch2를 리베이스하는 경우 재생은 branch1을 기준으로 수행되므로 "그들의"는 실제로 branch2이고 "ours"는 branch1입니다. git.661346.n2.nabble.com/…
Mr


1
이 작업에는 약 20 시간의 근면 한 작업이 필요했습니다. 나는 솔직히 "우리의 것"이 항상 작동하는 사본이라고 생각했다.
Theodore R. Smith

답변:


496

사용하고 싶은 것 :

git checkout --ours foo/bar.java
git add foo/bar.java

당신이 지점 리베이스 경우 feature_x에 대하여 master(실행 즉 git rebase master분기 동안을 feature_x), 리베이스 과정 ours을 의미 master하고 theirsfeature_x.

git-rebase 문서 에서 지적했듯이 :

리베이스 병합은 분기 위의 작업 분기에서 각 커밋을 재생하여 작동합니다. 이로 인해, 병합 충돌이 발생했을 때, 우리의 것으로보고 된 측면은 <upstream>부터 시작하여 지금까지의 리베이스 된 시리즈이고 그들의 분기는 작업 브랜치입니다. 다시 말해, 측면이 서로 바뀝니다.

자세한 내용 은이 스레드를 참조하십시오 .


0

다른 브랜치에서 특정 파일을 가져 오려면

git checkout branch1 -- filenamefoo.txt

하나의 브랜치에서 현재 트리로 파일 버전을 가져옵니다.


35
이것은 아마도 rebase 중간에 나쁜 생각 일 것입니다. 분리 된 헤드 포인트가 아닌 해당 브랜치의 헤드에서 파일을 가져올 수 있기 때문입니다.
Clintm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.