如何删除特定提交?

时间:2017-06-22 22:11:11

标签: git version-control

我们有一个主分支,一个主服务器的临时分支,以及我的功能分支。这是一个图表:

     my_feature: o--o--o---o--o  <= after rebase, contains commits
                /         /         from other_feature
other_feature: o--o      /
              /    \    /
    staging: o--o---o--o 
            /            
   master: o--o--o--o-o--o--o--o--o  <= master

我在my_featureother_feature合并之后重新定位了staging分支,目的是合并到staging但后来意识到my_feature应该直接合并到master other_feature

现在的问题是,我master的提交目前在git revert --no-commit 65b2e1b没有业务。

当我尝试fatal: Your index file is unmerged时,它会返回未合并文件列表和git status。我不知道这是什么意思。

git commit -am "revert"返回上述未合并的文件。所以我运行了You are currently reverting commit 5a53cd0. nothing to commit, working directory clean,它返回了一条消息git push。如果我然后尝试everything is up to date,则只需说source = os.listdir("../myprogdir") # directory where original configs are located destination = '//' + servername + r'/c$/remotedir/' # destination server directory for files in source: if files.endswith("myconfig.exe.config"): try: os.makedirs(destination, exist_ok=True) shutil.copy(files,destination) except: pass

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用新的rebase撤消原始rebase:

git checkout my_feature
git rebase --onto original_master staging

...其中original_master是您的ASCII图片中最左侧/向下的提交,即您最初分支my_feature的提交(我认为这是您所做的,尽管您的图片显示对左侧o'进行严格解释的其他内容。

这将从original_master开始,然后将staging的每个补丁应用到my_feature,换句话说,它会“移除”{{1}之间的任何内容来自original_master的{​​}和staging。当然,形象地说,我很确定你知道my_feature没有更改任何东西而只是在其他地方添加新的提交......

如果这有意义,那很好 - 如果没有,请随意在评论中提问,以便澄清。