我通常使用两个分支:master和homepage_buildout。最近我被告知在我开展项目之前检查一个旧的提交。我只是做了:
git checkout [commit number]
然后我决定让这个旧提交成为一个分支:
git checkout -b old_homepage
现在,我意识到我不再需要能够引用分支old_homepage
,但我仍然希望它作为提交存在。如何保留这些提交,但在键入时删除分支:
git branch
答案 0 :(得分:9)
我认为你实际上要问的是:“如果我git branch -d old_homepage
提交会丢失”,答案是:“删除名称只会删除 name ;只要您在git log --all
中看到它们,实际上甚至更长时间,它们就会自行保留。“
为了更好地将其可视化,请运行类似gitk --all
或gitk --tags
的内容(尝试使用某些复杂的git repos)。滚动提交。现在想象一下在任何提交上粘贴便条。这是一个“标签”或“分支”名称。取下粘滞便笺。承诺仍在那里,对吧? : - )
这留下了一个显而易见的问题:什么时候提交实际上会消失?答案是:只有在您删除了所有所有的名称之后。 gitk
命令(与大多数其他git命令一样)以名称HEAD
开头。如果你给它--all
,它会添加它可以找到的所有分支名称。如果你给它--tags
,它会添加它可以找到的所有标记名称。然后它向后工作,查看每个提交以查看它引用的其他提交。
git log
找到的编号的旧提交中,那么会为您提供一个新的该提交号的明显名称;但是再次删除它是安全的,只要它不是唯一的方式来查找它。
答案 1 :(得分:3)
您可以标记提交:
$ git tag <tagname> <commit-hash>
由于标记引用了提交,因此不会对其进行垃圾回收。
答案 2 :(得分:0)
我不太确定,但在那种情况下,你通常会使用标签。
git tag <some-name> <commit-id>
它不会显示在git-branch
中,但git-tag
会显示它。