如何创建一个具有两个分支差异的新git分支?

时间:2016-06-01 13:22:30

标签: git version-control

我有我项目的$[VLOOKUP(G3,[book.xlsx]Sheet.A1:F10000,5,)]分支。我还有一个分支master,它有adding-charts分支中的许多更改,新文件,修改等。我想要创建一个新的分支master,它跟踪了与​​两个分支不同但尚未提交的文件。

我可以通过...... new-feature

看到差异

我期望的是有一个新的分支,其中的那些显示在"变更将被提交"或"未跟踪文件"在做git diff --name-status master adding-charts时。我的想法是这样我可以修改并正确地将它们提交/合并回git status分支。

如果这不是进行更改的正确过程,请告知我们。感谢

修改

所以,我之前以一种非常基本的形式使用过git,并且通过解释它,或许它会更清楚地了解我如何到达我所处的地方以及我想要做的事情。

通常,我会处理一个功能,并从我的master分支添加/ commit / push。如果我有任何我正在处理的功能,那么在我想要将更改发布到我的Web应用程序时,我就不会添加或提交它们,我会继续处理它们直到它们完成。

最近我的访客虚拟机开始出现问题所以我将所有内容都以新的分支名称提交到我的存储库并将其推送到我的github帐户。我想克隆回最近建立的新VM。我认为这是开发新工作流程的好时机。我想在任何时候添加新功能,我应该创建一个新分支,然后在完成后合并/发布它。所以我打算继续前进,但我现在正在努力清理它。 master是一个实际上包含一些新功能的分支。

1 个答案:

答案 0 :(得分:2)

我会这样做(但请在开始之前阅读所有步骤):

  1. 确保您没有任何未提交的内容(git stashgit commit可以为您提供帮助)
  2. 记下你的位置,以防万一出错:git rev-parse adding-charts会给你一个很好的参考
  3. 在主人(git checkout adding-charts; git rebase master
  4. 之上添加图表
  5. 现在,您可以git reset master获取暂存区域中的所有修改。 (请注意,这会丢弃所有提交消息,您可以稍后获取这些消息,但我不会在此处包含它。)请尽可能git addgit reset HEAD -- filename然后git commit如你所愿。从master中已存在的文件开始(即git status,并查找不带“新文件”前缀的文件)。
  6. 现在您已按顺序完成所有提交,您可以git checkout mastergit merge XYZ,其中XYZ是添加图表分支中的最新提交,仅更改旧文件。 git log -p adding-charts可以帮助您在此处找到XYZ
  7. 更新主文件后,您可以git push master(我认为您的问题的原因是继续处理添加图表,同时在主人上分享您的更改)
  8. 要继续处理添加图表,您可以git checkout adding-chartsgit rebase master
  9. 如果出现任何问题或改变主意:

    • git rebase --abort如果你正处于一个篮板中间
    • git checkout adding-charts; git reset --hard XYZ其中XYZ是上面第2步中git rev-parse的结果。这将使所有这一过程无效。