0

Jenkins ジョブの自動化スクリプトを開発しています。このスクリプトはパラメーターを受け取り、$1リポジトリ ファイルに小さな変更を加えて、その変更をプッシュします。それは単に行います:

git clone repo
echo > $1
git commit -a -m 'updated'
git push

これらの Jenkins ジョブが一度に実行されると、次のエラーでgit push頻繁に失敗します。

! [rejected]        master -> master (non-fast-forward)

これは完全に理解できます。しかし、スクリプトの呼び出しごとに異なる$1.

マニュアルページから、次のことを学びました。

--force           
       ... This flag disables these checks,
      and can cause the remote repository to lose commits;
      use it with care.

フラグは私のシナリオに適していますか?

4

1 に答える 1

0

他のコミットとそれに続く他のファイルを失う余裕がない場合は、 を使用しないでください。--force

代わりに、プルを使用して他のプロセスの変更を取り込み、後でプッシュします。

git pull origin master && git push origin master

リポジトリにマージ コミットをなくしたい場合は、次の使用を検討してpull --rebaseください。

git pull --rebase origin master && git push origin master

pullと の間にわずかな時間差があることに注意してくださいpush。再びコミットが入り込む可能性があります。うまくいかない場合は、必要に応じてコマンドを繰り返すことを検討してください。ただし、これによりハングが発生する可能性があることに注意してください。

于 2014-02-14T12:55:41.930 に答える