社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

如何正确地进行git合并

user2439070 • 5 年前 • 1628 次点击  

我有两个分支:师父和布兰克2。

它们仅在一行上有所不同,以供评论:

师父有意见://test 00

branch2有注释://test 99

假设我从branch2开始并合并到master,那行是不是

//test 00或//test 99?当我尝试使用git bash时,它返回消息“merge maked by the‘recursive’strategy”,但实际上它并没有显示更改。

PS C:\Node\projects\n-5-10-workflow-test> git checkout branch2
 Switched to branch 'branch2'
PS C:\Node\projects\n-5-10-workflow-test> git status
 On branch branch2
 nothing to commit, working tree clean
PS C:\Node\projects\n-5-10-workflow-test> git remote show origin
 * remote origin
 Fetch URL: https://github.com/masterinex/workflow.git
 Push URL: https://github.com/masterinex/workflow.git
 HEAD branch: master
 Remote branches:
  branch2 tracked
  master tracked
 Local branch configured for 'git pull':
  master merges with remote master
 Local refs configured for 'git push':
  branch2 pushes to branch2 (fast-forwardable)
  master pushes to master (up to date)
PS C:\Node\projects\n-5-10-workflow-test> git status
 On branch branch2
 nothing to commit, working tree clean
PS C:\Node\projects\n-5-10-workflow-test> git branch -a
 * branch2
 master
 remotes/heroku/master
 remotes/origin/branch2
 remotes/origin/master
PS C:\Node\projects\n-5-10-workflow-test> git merge master
 Merge made by the 'recursive' strategy.
PS C:\Node\projects\n-5-10-workflow-test>
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43928
 
1628 次点击  
文章 [ 4 ]  |  最新文章 5 年前
benhorgen
Reply   •   1 楼
benhorgen    6 年前

对你问题的简短回答, “假设我从 branch2 我融入 master ,该行是“//test 00”还是“//test 99” :

如果你正在合并 鳃2 进入之内 主人 鳃2 已从分支 主人 那么答案是“//test 99”。

但如果这行代码在 主人 从原始价值 “/测试00” 在那个时候 鳃2 创建了,然后会有合并冲突。

如果 鳃2 是从另一个没有根的分支创建的 主人 然后期待一场冲突。但在git中,默认情况下所有分支都指向标记为 主人 …除非在回购协议中有一些奇怪的分支历史。

Ian MacDonald
Reply   •   2 楼
Ian MacDonald    6 年前

你的合并合并了你的本地 master 分支 进入之内 你当地的工作部门( branch2 )由于没有冲突,这条线路的历史可能如下:

|
* (master)         // test 99
|\
| * (branch2)      // test 99
* | (master)       // test 00
|\|
| * (branch2)      // test 00

意思是当前分支上的文件应该包含 // test 00 .

这似乎是你的问题,但是 grep '// test' <the file> 会回答你的问题…

Guru_Clef
Reply   •   3 楼
Guru_Clef    6 年前

当你做一个 合并分支 你要把主分支带到实际分支。

//on branch branch2
git merge master

主服务器的所有内容都将转到Branch2

分支2<———————————————————————————————————————————————

torek
Reply   •   4 楼
torek    6 年前

[分支] master branch2 ]只有一行的注释不同:

师父有意见://test 00

branch2有注释://test 99

这是。。。不是没用的,也不是完全用的 充满 信息。当你对什么感兴趣 git merge 好的,每个分支的提示内容是 答案的钥匙。更确切地说,它们是必要的,但严重不足。

首先,记住提交包含文件。我想当你说 主人 有X和 鳃2 你真的是说: 提示中的所有文件提交由 主人 鳃2 分别是相同的,除了一些文件 f ,其中有一些行 L 其文本不同:该行显示 //test 00 在里面 主人 //test 99 在里面 鳃2 .

也就是说,如果我们要绘制提交图,它可能如下所示:

          o--o--X   <-- master
         /
...--o--*
         \
          o--Y   <-- branch2 (HEAD)

(还有其他可能的形状,但是 合并分支 表明这很像。名字 HEAD 附加到 鳃2 因为那是你签过的。)

这里我用过 X Y 表示 提示提交 分支机构 主人 鳃2 。因为每个提交都包含它的直接父提交的散列ID,所以我们可以从上一个提交中向后工作。 主人 上一次提交 主人 ,从那里到 它的 上一次提交,依此类推。我们也可以从提交开始。 Y 向后移动。当我们同时从 二者都 提交,我们最终会达到一些连接点:提交 * ,而不是一个回合 o 提交。

第一个这样的连接点对于 合并分支 ,因为它是 合并基础 . 合并基础是理解 合并分支 会的。

合并的目的是合并工作 ,而不是简单地使两个分支相同。为了 结合 工作完成了,吉特必须找出 工作是什么 . 这项工作包括 自公共起点以来所做的所有更改 . 合并基础是共同的起点。

实际上,git现在将运行两个单独的 git diff 命令。一个人将比较提交 * 提交 X ,看看“他们”在分行做了什么 主人 . 另一个将比较提交 * 提交 Y ,看看 在你的树枝上, 鳃2 . 即:

git diff --find-renames <hash-of-*> <hash-of-Y>   # what did we change, on branch2?
git diff --find-renames <hash-of-*> <hash-of-X>   # what did they change, on master?

吉特 组合 这两组更改并将组合的更改应用于commit的内容 * .

自从你,在 鳃2 很明显,他们做的一切都一样 主人 的确如此, 除了 换行 L 文件的 f ,组合的更改将相同,但此行除外。现在的问题是: 谁改了线?

我们这么说吧 * ,该行显示 /测试00 。然后 换了线,所以Git会 你的 改变,结果就是这样 L 文件的 f 将阅读 /测试99 .

但是我们可以这么说 * ,该行显示 /测试99 。然后 他们 换了线,所以Git会 他们的 改变,结果就是这样 L 文件的 f 将阅读 /测试00 .

最后,有可能在 * ,该行完全读取了其他内容。在这种情况下,你和他们都改变了 相同的 直线 相同的 文件,但有两个不同的东西。在这种情况下, 合并分支 会宣布有冲突,会停下来留下你必须清理的烂摊子。由于这种情况没有发生,显然情况并非如此。

检查该文件将告诉您git保留了哪些更改,而这又将告诉您该行在合并基中的外观。或者您可以自己找到合并基,并在该特定提交中检查该文件的版本。但是根据您所告诉我们的,我们无法预测哪一行进入合并提交。