0

我想从 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 --onto like

$ git rebase --onto HEAD~2 HEAD^  

但我最终得到了一个提交('初始提交')和它的所有引用(HEAD,master,new-branch)。如果我结帐到新分支,虚拟文件​​又回来了。

我的“新分支初始提交”去哪儿了?我失踪了什么?

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

4

1 回答 1

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
于 2013-10-05T01:44:31.880 回答