【问题标题】:How do I push a commit without destroying teammate work?如何在不破坏队友工作的情况下推送提交?
【发布时间】:2021-01-27 00:55:49
【问题描述】:

我是 Git 新手,今天在我的 uni 项目中遇到的问题如下:

  • 我对某些文件进行了一些更改,提交并推送到我们的 GitHub 存储库。
  • 我告诉我的队友我做了提交,他抱怨说现在他不能提交他的更改。

我没有意识到他和我同时在编码——他说如果他取消我的提交,那么他对相同文件的更改将会丢失。

我们现在该怎么办,我是否只是告诉他将这些文件复制到他驱动器中的另一个位置,然后“组合”这些更改?以后如何避免这种情况?

抱歉措辞不佳,正如我所说,我是初学者,对这个话题一无所知。

【问题讨论】:

  • 1. git 可以很好地合并 2. 你可以在不同的分支上工作并做拉取请求。
  • 请考虑研究分支和合并,以及它如何在您的特定环境中发挥作用。这是最好的起点。现在,这有点太宽泛了,没有具体的上下文来说明你们是否都在同一个代码领域工作。
  • 如何避免这种情况?先说吧。 :-) 就是说,有时它会发生,即使是在真正会说话的团队中。 Git 不会丢失他的更改(至少不是故意的),而是 git pull 可能会导致合并冲突。虽然他们可能会有压力(因为人们不经常与他们打交道),但有一些方法可以退出并再次尝试而不会失去工作。在未来,分支和合并是一种更好的方式。您可能会发现这是一个有用的介绍:atlassian.com/git/tutorials/using-branches/merge-conflicts
  • 正如@JohnSzakmeister 提到的,更改不会丢失。也许他还没有提交他的更改,而 git 告诉他在继续之前隐藏或提交它们。这正是 git/版本控制做得好的地方。合并冲突是不可避免的,但不要害怕它们。
  • “他说如果他拉下我的提交,那么他对相同文件的更改将会丢失。”不是真的,他会遇到冲突,然后你们两个人一起解决,因为你们两个人制造了冲突。根据我的经验,我总是会在冲突发生之前避免冲突。你需要预测你修改的文件不会影响你的队友,并与他协商避免同时修改同一个文件。

标签: git git-commit git-push git-pull


【解决方案1】:

我没有意识到他和我同时编码

欢迎来到真实的编程世界。这种情况一直都会发生。

这是一个常见的问题,任何体面的版本控制系统都具有自动合并更改的内置功能。 Git 在这方面非常强大,当更改位于文件的不同部分时,第二个人进行拉取(或获取/变基)甚至不会注意到。您只会注意到 git 无法自行合并时,最终会出现合并冲突,这需要人工注意。

我们现在做什么,

假设您的同事执行了 git pull 失败,因为您推送了影响其中一些文件的更改。每个文件现在将包含有关冲突更新的信息。像 Visual Studio code 这样的编辑器会向您显示所有这些冲突,并允许您选择相应代码的这个或那个版本。转至this,阅读“合并冲突”部分。

换句话说,真正的答案是:现在是所有与您一起工作的人拿起一本关于 git 的好书(例如 one)并开始的时候了了解您正在使用的工具。你看,git 是一个非常强大的,有时是令人困惑的工具。如果您认真学习编程,那么您也必须认真学习此类工具。

【讨论】:

  • 非常感谢您提供这个非常好的答案!然后我将开始阅读有关合并和分支的内容。祝你有美好的一天!
【解决方案2】:

您和您的队友可以使用相同的存储库拥有不同的分支。

git checkout master
git checkout -b 'yourBranch' #this branch for you

git checkout master
git checkout -b 'aliceBranch' #this branch for your friend

# when your done, push to related branch
git push origin <branchName>

git-scm.com/docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-10
    • 2020-09-17
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2021-04-28
    相关资源
    最近更新 更多