Git的策略是继续将我的更改应用到其他人的升级分支
我认为这是一种非常常见的情况: 我克隆了一个开源项目的开发分支。 然后我创建了一个名为mychanges的分支,在这里我向项目添加了一些代码。 现在我想做的就是能够更新开发分支,使其反映最新的开发版本,但同时能够保留我的更改 如何做到这一点 我做了以下测试: 在母版上创建notes.txt 分支到mychanges并签出它 添加了一行 合并为主机 已删除主版本中的行 现在master有一个没有添加行的版本,mychanges分支有它,但是如果我再次尝试将mychanges合并到master,git会说“已经是最新的”。 如果我将开发分支合并到mychanges分支,也会报告冲突Git的策略是继续将我的更改应用到其他人的升级分支,git,Git,我认为这是一种非常常见的情况: 我克隆了一个开源项目的开发分支。 然后我创建了一个名为mychanges的分支,在这里我向项目添加了一些代码。 现在我想做的就是能够更新开发分支,使其反映最新的开发版本,但同时能够保留我的更改 如何做到这一点 我做了以下测试: 在母版上创建notes.txt 分支到mychanges并签出它 添加了一行 合并为主机 已删除主版本中的行 现在master有一个没有添加行的版本,mychanges分支有它,但是如果我再次尝试将mychanges合并到master,gi
谢谢 一旦你合并了它,那么,你已经合并了它 如果您在主服务器上进行合并后进行了提交,那么再次尝试合并当然会说已经是最新的。这就是合并的意义所在 如果您想在合并后返回到以前的状态,可以执行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提供了一个更好的线索。干杯