Git:merge隐藏了某些变化

sri*_*bin 5 git bash version-control merge gitlab

我们使用git在2015视觉工作室工作.我们有中央存储库(GitLab)和单个分支'master'.两个人克隆了存储库.

  1. 第一个人在解决方案中添加了"test-new-file-v.t​​xt"文件.它已更改解决方案文件(.sln)并更改了字符串"VisualStudioVersion = 14.0.23107.0".然后他在您的本地存储库中提交,然后在中央存储库(GitLab)中推送此提交.之后,我们在中央存储库(GitLab)中看到了这个提交: 在此输入图像描述

  2. 第二个人在解决方案中添加了"testgit.txt"文件.它也改变了解决方案文件(.sln),但没有更改字符串VisualStudioVersion.然后他想在推送前拉中央存储库(GitLab).

  3. 第二个人发生了冲突.他通过视觉工作室2015合并,看到不同的人在"VisualStudioVersion = 14.0.23107.0"上更改"VisualStudioVersion = 14.0.24720.0"时犯了错误.第二个人想要保持字符串"VisualStudioVersion = 14.0.24720.0"不变.他为这个字符串选择了本地状态"VisualStudioVersion = 14.0.24720.0"并进行提交合并.之后,他将这两个提交推送到中央存储库(GitLab).
  4. 之后,我们观察了中央存储库(GitLab)中的历史记录和更改,并看到提交合并来自第二个人: 在此输入图像描述

我们看到在中央存储库(GitLab)解决方案文件包含字符串"VisualStudioVersion = 14.0.24720.0",这是正确的,但我们不会看到这个字符串替换字符串"VisualStudioVersion = 14.0.23107.0",因为从第一个人提交包含此字符串并在合并提交之前.

我的问题:

  1. 这是正确的行为吗?我希望在合并提交中看到字符串"VisualStudioVersion = 14.0.23107.0"更改为"VisualStudioVersion = 14.0.24720.0".
  2. 我怎样才能实现可以看到所有变化的行为?

And*_*ewK 2

  1. 我假设他在主分支上提交之前没有收到您的更改,因此在本地他可能没有要推送的更改。如果您的分支已过期,这可以防止代码被恢复。

  2. 我建议不要向 master 提交更改。创建单独的本地分支并使用拉取请求到主分支。

考虑使用 git 分支策略来保持分支有序。

Git 分支模型