1

我对 Git 还很陌生,所以请原谅我的白痴。

我遇到了从远程存储库中提取更改的问题。我之前对特定文件进行了很多更改,而一个团队成员推送了一些根本不起作用的更改。让我感到困惑的是,我将如何防止他的更改改变我所做的事情?是否像撤消最后一次提交并从那里开始一样简单?

4

2 回答 2

1

由于 git 是一个分布式版本控制系统,它取决于您使用的信任模型。在这种情况下,您和他们可能都更改了 master 并且您(可能)都在做git pull origin master. 当您这样做(或git fetchgit merge实际上包含的)时,您基本上是在说您信任其他人所做的任何更改,即其他有权写入存储库的人。所以这可能就是你今天所处的位置。
我建议您考虑进行交互式变基(例如git rebase -i HEAD~10) 这也可以让你简单地删除历史的提交。我这样说而不是仅仅撤消最后一次提交,因为您需要提交您的更改,并拉出他现在将是较旧的提交并且更难达到的内容。但是要非常谨慎地使用 rebase 交互。我建议您在学习执行此类操作时将整个项目备份到另一个目录。在提交和推送之前仔细检查结果。

有很多选择可以避免再次发生,这里有一些:

  • 在分支机构工作

  • git fetch合并它们之前,首先检查被带入源跟踪分支的更改。

  • 指定一人审核和批准变更

有关您的选项的更多信息,请参阅
git branch、fork、fetch、merge、rebase 和 clone 中的 fetch merge 和 rebase 选项,有什么区别?

于 2012-09-06T01:17:53.147 回答
0

你能做的是

  • 在本地提交您的代码,然后拉取
  • 更好的选择是执行 git fetch ,它将显示哪些文件将被合并
  • 你们俩有可能共同处理过一些文件,但如果你们处理过不同的行,那么它们会递归合并而不会发生冲突。
  • 如果存在冲突,请考虑哪个是正确的来解决它们,然后再次提交已解决的文件。然后最后推送代码,您的更改已成功推送。
于 2012-09-06T06:24:27.403 回答