Git:merge隐藏了某些变化

时间:2016-01-21 09:40:23

标签: git bash version-control merge gitlab

我们使用git在2015年的visual studio中工作。我们有中央存储库(GitLab)和单个分支' master'。两个人克隆了存储库。

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

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

  3. 第二个人发生了冲突。他通过2015年的视觉工作室合并,看到不同的人在改变" VisualStudioVersion = 14.0.24720.0" on" VisualStudioVersion = 14.0.23107.0"。第二个人想留下字符串" VisualStudioVersion = 14.0.24720.0"不变。他选择了当地的州#34; VisualStudioVersion = 14.0.24720.0"对于此字符串并进行提交合并。之后,他将这两个提交推送到中央存储库(GitLab)。
  4. 之后,我们观察了中央存储库(GitLab)中的历史记录和更改,并看到提交合并来自第二个人: enter image description here
  5. 我们看到在中央存储库(GitLab)解决方案文件中包含字符串" VisualStudioVersion = 14.0.24720.0"这是正确的,但我们没有看到这个字符串替换字符串" VisualStudioVersion = 14.0.23107.0",因为第一个人的提交包含此字符串并且在合并提交之前。

    我的问题:

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

1 个答案:

答案 0 :(得分:2)

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

  2. 我建议不要对master进行更改。创建单独的本地分支并将pull请求用于master。

  3. 使用git分支策略来保持你的分支机构有序。

    Git Branching Model