git rebase - 在单次提交时产生结果

时间:2013-10-03 22:42:19

标签: git version-control branch

我想用master创建一个分支但是我需要这个分支有一个空树。经过一番研究后,我得出以下情况:

  • 主分支只有一个带有虚拟文件的提交。
  • 我结帐新分行
  • 我删除所有文件并提交
  • 我使用--allow-empty
  • 创建一个新提交

以下命令可以帮助您:

$ git init  
$ touch dummy  
$ git add .  
$ git commit -m 'initial commit'  
$ git checkout -b new-branch  
$ git rm -rf .  
$ git commit -m 'clean up tree'  
$ git commit --allow-empty -m 'new branch initial commit'

现在我想摆脱清理树'承诺。我试图使用rebase - 就像

$ git rebase --onto HEAD~2 HEAD^  

但我最终只有一次提交('初始提交')和所有引用(HEAD,master,new-branch)。如果我签入新分支,则会返回虚拟文件。

我的新分支初始提交的位置是什么?去?我失踪了什么?

Obs。:我这样做是因为我想关联这些分支,但我不想保留父提交中的文件。

1 个答案:

答案 0 :(得分:1)

true | git mktree | xargs git commit-tree -p master | xargs git branch new-branch

这是

中最快的单行
emptytree=$(git mktree </dev/null)
emptycommit=$(git commit-tree -p master $emptytree </dev/null)
git branch new-branch $emptycommit