不要git push

我承认标题有点挑衅。 当然,您需要推动更改。 我可能应该将其重命名为“不仅仅是git push”或“不要只是git push”。 但是我很喜欢clickbait标题。

我的意思是,您永远不要键入:

git push

这引起了一个问题,为什么? 回答这个问题是这篇文章的主题。

回归本源

如果您曾经与Git一起工作过,您就会知道git push接受remotebranch作为参数, 例如

git push <remote> <branch>

一般来说:

  • <remote>origin
  • <branch>是您当前正在处理的分支
git push origin master
当在同一分支上推送时,以上内容可以替换为:git push <origin> HEAD

优化击键

开发人员是懒惰的一群。 我当然会相信自己。一段时间之后,我们通常会尝试减少键入的键数。 为了做到这一点,我们在按下按钮时设置了遥控器

git push-u origin master

结果应类似于:

Branch 'master' set up to track remote branch 'master' from 'origin'.

这在项目的Git配置文件中也可见:

git /配置
[branch "master"]
    remote = origin
    merge = refs/heads/master

这意味着本地master分支跟踪远程origin/master分支。 现在,只需在master分支上键入git push自动将其推送到origin/master

麻烦上升

一段时间后,我们可能会开始跟踪多个分支。 万物是世上最好的。 通常的工作流程如下:在特定分支上工作,发出请求请求,然后合并到master 。 但是,有朝一日,我们需要在重新推动之前重新设计本地分支机构。

git rebase-i <commit>
git push --force

到那时,我们注意到所有跟踪的分支都被立即推送 ! 用--force !!!

我们回到第一个平方,发誓再也不要在没有参数的情况下进行推送。 但是,解决方案仍然可以实现。

为避免任何麻烦,请不要使用--force,而应使用--force-with-lease选项。 只是说。

推送默认值

让我们看一下文档:

在两端推送具有相同名称的所有分支。 这使您要推动的存储库记住将要推出的分支集( 例如,如果您始终将maintmaster推入那里,而没有其他分支,则要推入的存储库将具有这两个分支,以及本地的maintmaster将被推到那里)。

要有效地使用此模式,必须确保在运行git push之前已准备好将要推出的所有分支都git push ,因为此模式的要点是允许您一次推送所有分支。

— Git文档
https://git-scm.com/docs/git-config#git-config-pushdefault

幸运的是,有几个选项可以替代此默认设置。

推送选项

有几个选项:

选项 描述 笔记

nothing

Does not push anything if no branch is set

Default in Git 1.x

matching

Pushes all branches having the same local and remote name

tracking / upstream

Pushes the current branch to its upstream branch

simple

Like upstream , but refuses to push if the upstream branch’s name is different from the local one

current

Pushes the current branch to a branch of the same name

Default in Git 2.x

默认版本似乎取决于最初安装的版本,而不取决于运行时版本。 如果您在2.x之前开始使用Git-像我一样,默认情况下仍然可能匹配。

若要设置默认行为,请使用以下命令:

git config--global push.default simple

当然,然后可以在特定的Git项目上覆盖默认值:

git config push.default nothing

结论

如果不知道push.default配置选项,则在不带任何参数的情况下键入git push可能会导致问题。 调整这个非常小的参数可以在提高生产力和损坏存储库之间以及与团队之间的关系方面产生巨大差异。

翻译自: https://blog.frankel.ch/dont-git-push/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值