我是Git的新手,请随时将我当作新手对待。
我们的工作流程就是这样。我们有一个分支机构dev,我可以到达origin/dev。当我们进行更改时,我们将创建一个dev分支:
git checkout -b FixForBug原始/开发
现在,我有一个名为的分支FixForBug正在跟踪(我认为这是正确的词)origin/dev。因此,如果我做一个,git pull它将带来新的变化,origin/dev而伟大的变化。现在,当我完成修复程序后,我将推送到一个称为相同对象的远程分支。
首先,我从下拉列表中进行任何更改origin/dev并重新设置基准:
git pull --rebase
然后,将更改推送到同名的远程分支:
git push origin FixForBug
现在,远程服务器上有一个分支,我可以创建一个拉取请求,以将更改批准并合并回dev分支。我从不向origin/dev自己推销任何东西。我猜这是很普通的工作流程。
第一次执行git push,它可以正常工作并创建远程分支。但是,如果我第二次按下(例如,在代码审查期间,有人指出了一个问题),则会出现以下错误:
错误:无法将某些引用推送到“ https://github.limeade.info/Limeade/product.git ”提示:由于当前分支的提示位于提示:其远程对应的后面,因此更新被拒绝。在再次推送之前,集成远程更改(例如提示:“ git pull ...”)。提示:有关详细信息,请参见“ git push --help”中的“关于快进的注意事项”。
但是,如果我执行了git status它,则表示我比origin/dev1次提交领先(这很有意义);如果我遵循提示并运行git pull,则表示一切都是最新的。我认为这是因为我要推送到与上游分支不同的分支。我可以通过运行以下方法解决此问题:
git push -f origin FixForBug
在这种情况下,它将把更改推送到远程分支,说(强制更新),那么远程分支上的一切似乎都很好。
我的问题:
为什么-f在这种情况下需要?通常,当您强迫某件事时,是因为您做错了某件事,或者至少是违反了标准做法。我可以这样做吗,还是会弄乱远程分支中的某些内容或为最终将我的东西合并到开发人员中的人造成麻烦?
git pull origin FixForBug在我推动之前运行?好吧,这很有道理。随意添加为答案!
