web-dev-qa-db-ja.com

競合するGitリベースの途中で「それら」の変更を取得する方法は?

競合するブランチがあり、branch2がbranch1から分岐しています。

branch2を現在のbranch1にリベースするときに、競合を解決しながら、some(すべてではない) "their"(つまり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
322
Ondra Žižka

あなたが使いたい:

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

masterに対してブランチfeature_xをリ​​ベースする(つまり、ブランチgit rebase master上でfeature_xを実行する)場合、リベース中にoursmasterを、theirsfeature_xを参照します。

git-rebaseのドキュメント で指摘されているように、

リベースマージは、作業ブランチから各コミットをブランチの一番上に再生することによって機能します。このため、マージの競合が発生したとき、私たちのものとして報告されているのは<upstream>から始まるこれまでにリベースされたシリーズであり、彼らのブランチは作業中のブランチです。言い換えれば、辺が入れ替わっています。

詳細については このスレッドを読んでください

441
iGEL

あなたが他のブランチから特定のファイルを引っ張りたいならば、ちょうどしなさい

git checkout branch1 -- filenamefoo.txt

これは、あるブランチから現在のツリーにファイルのバージョンを引きます。

1
Adrian Cornish