我现在正在使用git一段时间,制造混乱和奇怪的东西,但现在想要实现一个良好的工作流程。
这是一个场景,我在github上得到了一些回购,只要我得到一个不错的提交,我想进入。
所以我克隆了( - 镜像)工作站上的github存储库,所以我可以在笔记本电脑上工作,在我的工作站上本地工作,而不会搞乱github(“经常提交,一次推送”,因为它们说)。
一切都很好,但是在从镜像到github执行推送之前我需要知道的一个基本事情就是知道我在镜子中提前了多少提交(我知道,git status不起作用'导致镜像也是裸型回购)。我的工作流程的简单架构:
(git cloned) - > (工作站上的git镜像) - > (GitHub的)
那我怎么知道克隆镜像回购中有多少提交?
答案 0 :(得分:1)
在镜像存储库中,运行git rev-list --count FETCH_HEAD..HEAD
将显示镜像位于其原点之前的提交数。这是基于您在镜像中执行的最后一次提取,但请注意镜像中的git fetch
将清除提交给镜像但未推送到镜像源的任何更改。
您可以使用
查看更详细的图片git rev-list --count --left-right HEAD...FETCH_HEAD
给出两个数字;第一个是当前分支上的提交数量,它们存在于镜像中但不存在于原点中,第二个是当前分支上的提交数量,这些提交存在于原点但不存在于镜像中(这将是如果您将分支重置为先前的提交,或者重新设置已经推送的某些提交,则为肯定。
答案 1 :(得分:1)
无论您在哪里结帐镜像存储库(在工作中或在笔记本电脑上)。为github添加第二个遥控器
git remote add github git@github.com:username/repo.git
当你完成提交时,你可以直接将它们推送到github而不会弄乱镜像。
git push github master
然后,当您想要推送WIP提交时,只需按常规方式使用push,它们就会被推送到镜像中。然后看看你的主人在github之前的距离,你可以做到
git log github/master..master
答案 2 :(得分:0)
比我的其他答案更简单的解决方案:如果你在镜像中git fetch
,那么所有引用都与原点相同,所以你工作的镜像克隆中的git fetch && git status
将是告诉你你需要知道什么(因为最近更新的镜像是其原点的精确副本)。
这也有一个优点,它适用于任何分支,而不仅仅是master
。