私のgitリポジトリにはmasterとdevelopmentという2つのブランチがあります。すべての変更を開発からマスターに自動的にマージするスクリプトが必要です。2 gitブランチを自動的にマージするスクリプトですか?
私はジェンキンスを使用:Gitのプラグインのクローンにリポジトリをしてから、このスクリプトは(「バージョン」変数は、ジョブのパラメータである)実行されます。
# merge
git checkout -b develop origin/develop
git checkout master
git merge -Xtheirs --squash develop -m "v${version}"
# commit
git commit -m "v${version}"
# tag
git tag v${version} -m "v${version}"
# push
git push origin v${version}
私はテスト用リポジトリ上でそれを試してみましたが、それがで失敗:
のgit -Xtheirsが
CONFLICTを(/削除、変更)を開発マージ:test.txtの開発で削除され、HEADに変更。 test.txtのバージョンHEADをツリーに残しました。
自動マージに失敗しました。競合を修正し、結果をコミットします。
にはどうすれば自動的にをこの競合を解決するのですか?マスターには決して触れないので、スクリプトは常に '開発'ブランチに従ってファイルを追加/変更/削除します。
あなたは「マスターは触れたことはありません」しかし、あなたが得ることを言いますとにかく争い?実際に触れることがなければ、単純な 'git merge -ff-only origin/develop'で十分でしょう。 – fge
マスターバージョンを 'origin/develop'バージョンで置き換え、マージコミットを記録しない場合は、なぜ' merge --nosquash'に気をつけますか? 'git checkout master && git reset origin/develop && git reset --soft HEAD @ {1}'またはそれに類するものではないでしょうか? –