git取消分支

时间:2015-05-23 08:29:44

标签: git atlassian-sourcetree

我使用sourceTree for Mac作为我的GUI所以我很感激使用它的说明,但显然我想学习bash命令作为我的第一语言。

我们有一个远程仓库,我们称之为develop,当您开发功能时,您可以从develop为该功能创建分支,例如feature1,拉它关闭,然后在你创建的分支上提交拉取请求。

我最近开发了一些分析工具,我不想把它放到远程代码库中(但无论如何)。

我如何在本地将我的analysis分支与我的feature1分支合并进行测试,然后在我完成后取消合并analysis

我合并时应该检查哪个分支feature1analysis

注意:我希望在合并分支时保留对feature1所做的所有文件更改;来自analysis的文件和编辑极不可能与我的功能分支冲突,所以基本上我添加了一些非冲突的代码,然后将分支拉出来;所以我对feature1所做的任何承诺,我都不想失去。

2 个答案:

答案 0 :(得分:0)

要取消合并分支,您可以简单地git revert合并提交,如下所示:

git checkout feature_branch
git revert -m 1 <merge_commit_sha>

您可能会遇到一些必须手动取消合并的冲突,就像正常合并时一样。

答案 1 :(得分:0)

TL;博士

我建议您将分析工具作为单独的代码在其自己的源代码控制下进行处理,并且永远不要将其合并到您的功能分支。将它保存在具有自己的git repo的文件夹中,并保存在更高级别的repo中的.gitignore下。

详细说明

我是否理解:

  1. 您有单独的分析代码,用于开发但不会成为功能代码的一部分,
  2. 它不应该成为共享代码库的一部分,
  3. 但是在开发期间你想在项目中使用它吗?
  4. 如果是这样的话:

    1. 合并根本不是一种方式。通过合并,您可以将代码放入提交中,然后将其推送到开发回购。在每个功能分支的几个中间提交中,仍然存在于远程代码库中。 (这可以通过git filter-branch解决,但我认为它用蒸汽滚筒碾碎了一只苍蝇。不值得。)
    2. 您很可能会开发分析工具,因此需要自己的版本控制和源代码控制。
    3. 解决方案

      在项目中创建一个特殊文件夹,并将其放在.gitignore

      /analysis/*
      

      如果你正在使用Maven或其他暗示严格结构政策的工具,这可能是/../../../../../analysis,但这没有区别。

      将所有与分析相关的代码放在该文件夹中。在那里启动一个单独的repo并在开发工具时进行提交。

      像以前一样使用功能分支。您现在唯一更改的文件是.gitignore。在推送到遥控器之前,请执行以下操作:

      git checkout <sha-of-branching-time-commit> -- .gitignore
      git commit -m'fixed .gitignore'
      

      这会将master-repo .gitignore返回到初始状态。您可能希望为将来的特色分支备份修改过的gitignore。

      或者,您可以与您的团队达成协议,以指定&#34;这是我的代码,我不会分享它&#34;夹。然后可以将其添加到公共.gitignore