git push --force 是否适合强制同时更新远程文件



我正在为 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.

该标志是否适合我的方案?

如果您

无法承受丢失其他提交以及随后的其他文件,则不应使用 --force

而是使用拉取来拉入其他进程的更改,然后在之后推送:

git pull origin master && git push origin master

如果您想让您的存储库清除合并提交,请考虑使用 pull --rebase

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

请注意,pullpush之间有一个轻微的窗口,再次提交可能会溜进来,如果命令没有通过,请考虑根据需要重复该命令。但请记住,这可能会导致挂起。

相关内容

  • 没有找到相关文章

最新更新