5

別の質問では.gitattributes、ファイルを追跡し続けるが別のブランチにマージされないようにするために使用することをお勧めしますが、以下の私のユースケースは機能していないようです..

mkdir git
cd git
git init
echo "B" > b.txt
git add b.txt 
git commit -m 'Initial commit'

echo "b.txt merge=keepMine" > .gitattributes
git add .gitattributes 
git config merge.keepMine.name "always keep mine during merge"
git config merge.keepMine.driver "keepMine.sh %O %A %B"
git commit -m 'Ignore b.txt'

git checkout -b test # Create a branch
git checkout master # Back to master and make change
echo "Only in master" > b.txt
git commit -a -m 'In master'

git checkout test
git merge master # The change in b.txt is being merged...

何か案が?ありがとう..

4

2 に答える 2

1

マージの競合がなかったため、機能しなかったと思われます。

ただし、期待どおりに動作することを確認できますgit merge master --strategy=ours

これはあなたが探しているものかもしれません:常にローカル バージョンを選択するように Git に指示する方法

特定のファイルに対して特定のマージ戦略を指定したい場合、実際に行う必要があるのは、カスタム マージ ドライバーを記述し、そのマージ ドライバーをデフォルトとして使用することをリポジトリ構成で指定することです。使い方は上記リンクを参照してください。

要するに、ユースケースで機能しない理由は、ユースケースがマージではないためです。test と呼ばれる一時的なブランチが作成され、後で master に移動された master での一連の変更のみを示しています。test ブランチにいる間は、実際にコミットを導入することはありません

于 2012-05-28T04:30:29.560 に答える
0

carleetoによって言及されたカスタム マージ ドライバは、「バイナリ ファイルをマージしないで選択するように gitに指示する 」に示されています。

必要な種類のマージをファイルで宣言でき.gitattributesます。

echo yourConfigFile merge=keepMine > parentDirectory\.gitattributes
于 2012-05-30T06:34:02.430 に答える