当 Git 或 TortoiseGit 出现冲突时,正确的提交/推送方式是什么?

问题描述 投票:0回答:2

我们正在使用 git 和合并工作流程。我们有很多 git 新手(包括 我)要么有 SVN 或 CVS 背景,要么没有版本控制背景 完全没有。

这是我们经常遇到的问题。许多团队成员都是 使用 TortoiseGit。由于并发,合并冲突经常发生 变化 - 或者因为他们不是每天都

pull
。一个用户会进行一次拉取操作, 合并冲突,解决合并冲突,然后查看文件列表 承诺回来。

但是文件列表显示了很多文件,尽管存在合并冲突 仅涉及几个文件。在提交时,他取消选中所有其他文件 他没有参与的变革,提交了结果并推动了 提交。

结果:该用户之间其他人完成的所有提交 上一个提交和这个都丢失了!

首先,为什么 Git 或 TortoiseGit 只显示用户拥有的文件列表 列表中无事可做?其次,在这件事上正确的做法是什么 场景 - 从 TortoiseGit 角度来看的任何答案都会有帮助。

git git-merge tortoisegit merge-conflict-resolution
2个回答
0
投票

我将逐行解答您的问题:

首先,为什么 Git 或 TortoiseGit 只显示用户拥有的文件列表 列表中无事可做?

当您合并来自另一个分支的文件更改时,这些更改当然可能会 包含其他人的工作。这就是为什么您看到的文件更改不是 必然是你的。它们代表您尝试合并的所有更改 在.

其次,在这种情况下正确的做法是什么 - 来自 a 的任何答案 TortoiseGit 的观点会很有帮助。

通过在解决合并冲突时取消检查文件,您实质上是 告诉 TortoiseGit 你实际上不想合并/保留这些文件 变化。你基本上是在说“我不想要这些改变,就把它们扔掉吧 离开”。如果这不是您真正想要做的,那么不要取消选中这些 TortoiseGit 已自动暂存并为您提交的文件,即使 您最初并不对这些文件的更改负责。


0
投票

你原来的问题是错误的。你的工作流程被破坏了,所以你会遇到很多冲突。你应该解决这个问题。如果您确实遇到合并冲突,树的状态是自动暂存传入的更改,并且需要手动干预的更改将在工作环境中进行。对于每个未暂存的文件,用户需要解决冲突并暂存更改。一旦一切准备就绪,您就可以提交整个变更集。这将是合并提交,因此它不应包含新功能或逻辑。如果您在此期间取消暂存文件,则实际上是用本地副本中的版本覆盖传入的更改。

至于工作流程中更深层次的问题,听起来人们正在直接致力于掌握。这是你的主要问题。没有人应该直接提交给你的主干。相反,人们应该开始在一个新的分支工作。即使更改是针对一个文件,高效的 git 工作流程也非常依赖于分支。一旦分支中的工作完成,您可以将您的分支合并到master,或者将master合并到您的分支。您还可以重新设置分支以避免多次合并提交,尽管我发现这是不必要的。

我的工作流程如下:

 # git checkout master
 # git pull
 # git branch newbranch
 .
 .
 Do work
 .
 # git merge master     <!-- Optional to pull in changes from master -->

 .
 .
 # git add <files>
 # git commit
 # git checkout master
 # git merge newbranch
© www.soinside.com 2019 - 2024. All rights reserved.