Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git的策略是继续将我的更改应用到其他人的升级分支_Git - Fatal编程技术网

Git的策略是继续将我的更改应用到其他人的升级分支

Git的策略是继续将我的更改应用到其他人的升级分支,git,Git,我认为这是一种非常常见的情况: 我克隆了一个开源项目的开发分支。 然后我创建了一个名为mychanges的分支,在这里我向项目添加了一些代码。 现在我想做的就是能够更新开发分支,使其反映最新的开发版本,但同时能够保留我的更改 如何做到这一点 我做了以下测试: 在母版上创建notes.txt 分支到mychanges并签出它 添加了一行 合并为主机 已删除主版本中的行 现在master有一个没有添加行的版本,mychanges分支有它,但是如果我再次尝试将mychanges合并到master,gi

我认为这是一种非常常见的情况:

我克隆了一个开源项目的开发分支。 然后我创建了一个名为mychanges的分支,在这里我向项目添加了一些代码。 现在我想做的就是能够更新开发分支,使其反映最新的开发版本,但同时能够保留我的更改

如何做到这一点

我做了以下测试:

在母版上创建notes.txt 分支到mychanges并签出它 添加了一行 合并为主机 已删除主版本中的行 现在master有一个没有添加行的版本,mychanges分支有它,但是如果我再次尝试将mychanges合并到master,git会说“已经是最新的”。 如果我将开发分支合并到mychanges分支,也会报告冲突


谢谢

一旦你合并了它,那么,你已经合并了它

如果您在主服务器上进行合并后进行了提交,那么再次尝试合并当然会说已经是最新的。这就是合并的意义所在

如果您想在合并后返回到以前的状态,可以执行git reset-hard ORIG_HEAD。现在,如果您再次尝试合并,合并将再次发生

完成合并后,更改就在分支中,无需继续更新。但是,如果更改合并到的分支,以从合并中删除内容的方式,则不能期望再次执行合并并将其恢复

您可以继续使用master重新设置mychanges的基址,以便mychanges始终基于master的HEAD,然后在需要时,将其合并到master

现在master有一个没有添加行的版本,mychanges分支有它,但是如果我再次尝试将mychanges合并到master,git会说“已经是最新的”

这是因为分支mychanges位于主分支的后面。也就是说,master包含mychanges中发生的所有更改

如果我将开发分支合并到mychanges分支,也会报告冲突

合并两个不同分支时发生冲突是正常的;这只意味着这两个分支中有不同的、冲突的更改,合并无法自动完成。我猜您已经编辑了一个位于开发分支上的文件,git无法确定您是否希望保留分支开发或mychanges的更改

现在我想做的就是能够更新开发分支,使其反映最新的开发版本,但同时能够保留我的更改

当git无法自动合并时,也就是说,它无法确定在合并中保留和放弃对文件的哪些更改时,您可以自己选择更改,然后重新合并分支。这允许您选择所需的更改;如果您想要来自开发分支的更改,您可以保留它们。但是,如果您更改了开发时更改的代码行,那么您可能希望保留这些代码行

您应该阅读,特别是,它将教您有关分支的知识,并在第3-6章中,在开发的新更改之上重新调整您的更改


这本progit书是关于使用git的一个很好的信息来源,它可能会回答您的一些问题

有趣的是,我在相邻的选项卡中打开了第3-6章。但是,在阅读了第3章的全部内容之后,插图让我得出结论,这不是使用的工具。这是非常令人印象深刻的-我已经完成了克隆,签出了以前的版本,对其进行了分支,应用了我的更改,然后运行了rebase master,这些更改应用于克隆版本。谢谢这本书,特别是插图,真正澄清了许多与分支有关的概念-这是一个很好的资源。感谢manojlds,但simont answer提供了一个更好的线索。干杯