我经常在我的笔记本电脑上有一个git存储库的开发克隆,我在其上创建了功能分支,以实现功能。当我在某个功能上工作一半但需要在同一个存储库中处理其他内容时,我会执行git stash
并检查该功能的新分支。
当然,git branch
告诉我有关所有分支的信息。然而,过了一段时间,我的笔记本电脑上可能存在本地结账,在远程原始分支上没有推送或甚至不存在某些功能分支。在一段时间没有处理项目之后,结帐可能会使我的工作空间变得杂乱,我可能希望将其从笔记本电脑中删除。
此外,我可能还想知道存储库中我的笔记本电脑上存在哪些新文件和更改,但不是原产地。 git status
告诉我有关当前分支检出的内容,但只是部分内容,因为它没有说明服务器上已有哪些提交,哪些没有。而且,每个分支也没有这样做。
是否有一个git命令可以告诉我我的笔记本电脑上有哪些新文件和更改以及哪些功能分支可用,而origin
上没有,这样我就可以确定是否安全删除我的笔记本电脑上的git repo?
如果命令会:
,那就太好了对于每个本地分支状态,如果它也存在于原点,原点是最新的,并且其中其他原始分支已经合并(通常你将一个功能分支与master合并,并且#39) ; t把它推到原点)。
针对每个分支状态,是否尚未提交本地更改或仅隐藏。
我应该注意的其他坑剔除。
一般情况下,我希望删除此存储库是否安全,并且知道原始存在的内容是什么?甚至更好的是我在这个回购中没有解决的问题。命令。
注意,我认为知道我的笔记本电脑上的内容,而不是原产地上的内容也是有用的,只是为了指出应该清理的内容。
将repo移动到备份文件夹是不行的,这会造成很多混乱,最后仍然不清楚哪个代码是最新的,最少的bug。
可能有效的东西是一个命令,它显示本地但不存在于原点的提交,以及源自本地不同分支的提交。此外,为每个分支显示未提交的命令将是很好的,即那些ar
答案 0 :(得分:1)
第一步(也是非常好的)步骤是查看
的输出git push origin --all --dry-run
显示哪些分支将推送到远程。如果输出为空(或“最新”或某事物),则可以安全地删除本地分支。
另一个帮助命令是
git fetch origin
git cherry -v master origin/master
它显示了本地主服务器和origin / master通用的提交。那些
带有-
符号的前缀已经在origin / master中,前缀为
+
符号不是,即如果显示的所有提交都以-
为前缀,则删除本地分支是安全的。如果某些前缀为+
,则master和origin / master在这些提交中有所不同。
实际上我会坚持git push origin --all --dry-run
,因为它更容易解释。
答案 1 :(得分:0)
上面缺少的部分(IIUC)是:如果删除此回购,本地文件将永远丢失? (例如,本地数据库文件被.gitignore忽略)。
在我看来
git clean -nxd
回答了这个问题。