Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
破坏性Git提交?_Git - Fatal编程技术网

破坏性Git提交?

破坏性Git提交?,git,Git,我开始学习Git,到目前为止,它非常棒。我只是在一个方面感到困惑,这可能只是一个误解 假设John在“John”目录下工作,而Bob在“Bob”目录下工作 如果John的代码不是我们想要的“John”目录的最后一项,而Bob从开发分支提取,Bob将得到John的所有“坏”代码,对吗 因此,Bob对“Bob”目录应用了一个简单的修复程序,并将其推送到生产分支。John在“John”目录中的坏代码不是通过Bob的推送潜入生产分支吗 这会发生吗? 如何避免这种情况 谢谢大家! 您通常不会将“断开的代码

我开始学习Git,到目前为止,它非常棒。我只是在一个方面感到困惑,这可能只是一个误解

假设John在“John”目录下工作,而Bob在“Bob”目录下工作

如果John的代码不是我们想要的“John”目录的最后一项,而Bob从开发分支提取,Bob将得到John的所有“坏”代码,对吗

因此,Bob对“Bob”目录应用了一个简单的修复程序,并将其推送到生产分支。John在“John”目录中的坏代码不是通过Bob的推送潜入生产分支吗

这会发生吗? 如何避免这种情况


谢谢大家!

您通常不会将“断开的代码”提交到
develope
master
(这是常见的名称)。
develope
分支通常用于“应该工作”的代码,
master
用于“稳定的代码”(类似于svn中的
trunk
)。如果要创建新内容,请为其创建一个新分支,例如
feature/myFeature
。现在大家都知道,这段代码可能完整,也可能不完整,通常会避免将其合并到自己的分支中。完成后(“它应该可以工作”),将其合并回
develope


然而,即使您的场景发生了,git也会意识到,这段错误代码已经是
开发的一部分,并且不会再次应用它。

推开发->生产和直接向生产分支提交修复程序之间有区别。后者对鲍勃来说是安全的


了解代码是否安全的唯一方法是在推送代码之前对其进行测试。这可能是QA团队、回归/单元测试等。

因此,如果Bob需要进行热修复,他会检查生产分支,将修复提交给分支,然后将生产分支推回,甚至不接触开发分支?如果Bob像John一样在开发分支上构建他的东西呢。Bob是否有可能在没有John的代码的情况下将他的项目(而不是热修复)推到生产部门?@Coder_Man-是的,但你所说的是重写历史,这不是远程回购的好主意。最好使用git还原。您可以使用-f强制git覆盖历史记录,但如果没有这个开关,git会告诉您,“remote较新,您必须先拉”它们位于同一个分支“development”上,在两个不同的目录中工作。在这种理论情况下,有可能鲍勃和约翰一开始没有分裂成他们自己的分支就搞砸了。。。