我正在与一小群人一起工作。我们有一个正在努力的UAT分支。因此,昨晚我对UAT分支进行了更改,但直到今天早上才推出更改。为了安全起见,我通常每天早上都会拉动我正在工作的树枝。今天早上我被告知其他团队成员对UAT分支进行了更改,而我对UAT分支的推送没有新的更改,因为我没有拉。
我知道我们应该进入我们正在研究的新分支,但是作为一个团队,不应缩短开发时间。这样开发人员就不会遇到这个问题?
还是总是进入您正在处理的分支只是一种好习惯?看起来您好像很容易犯错误。
答案 0 :(得分:1)
总是进入您所在的分支只是一种好习惯 在做什么?
实际上,我说您应该在提交任何更改之前先拉该项目。
我想做的是:
git stash # Stash your local changes
git pull # Update code
git stash apply # Merge your local changes
git add
git commit
git push
这似乎是您在犯错误。
我看不出它如何使自己犯错误。我认为这是完全相反的。
答案 1 :(得分:1)
在正常配置中,如果您不先拉(并且有更改要拉),则将拒绝推送。所以以下几件事是对的:
1)可能您在-f
命令上使用了--force
,--force-with-lease
或push
选项。通常,除非您有特定原因并且已经与所有其他回购用户进行了协调,否则您不应该这样做。如果滥用“推力”对于团队来说是一个长期的问题,可以在远程禁用它们。
2)也许您的配置被设置为默认情况下进行强制推送(即,对源推送的默认refspec可能以+
开头)。出于某种原因,必须故意设置此设置,因此我怀疑这是正在发生的事情;但如果是这样,那么解决方案是:不要那样做。
3)可能存在观察错误,某人认为他们推了一些您推推式推翻的东西,但是他们弄错了。
因此,您的问题是:是的,集成更改的模型是“先推后推”,但的后果是您的推推被拒绝,您必须再次尝试正确的方法。 (如果这种错误的结果是丢失了其他开发人员的更改,那么这种情况将一直发生,而git将毫无用处。)这意味着“尝试推送,如果失败,然后再推送”是完全有效的工作流程。
不,不需要缩短开发时间。 git的全部要点即使对于缺乏任何通用协调手段的全球分布的临时开发人员团队也可以使用。