Git 显示本地(非跟踪)分支上未推送的提交数
我在一家本地分支机构工作了太长时间,没有向上游推进,也没有忘记我在本地有多少承诺 我现在准备推送我的提交,但我需要提交的确切数量,以便使用Git 显示本地(非跟踪)分支上未推送的提交数,git,github,version-control,Git,Github,Version Control,我在一家本地分支机构工作了太长时间,没有向上游推进,也没有忘记我在本地有多少承诺 我现在准备推送我的提交,但我需要提交的确切数量,以便使用git rebase-I HEAD~4(4只是一个示例)挤压它们 我怎么找到那个号码 我尝试了git rev list——计算我的本地分支,但它显示了一个非常高的数字,这不是我想要的(我大约有6次提交) 另外,git log--graph--all--decoration--oneline没有给出我想要的 我认为问题在于我的本地分支不是跟踪的远程分支 因此,我
git rebase-I HEAD~4
(4只是一个示例)挤压它们
我怎么找到那个号码
我尝试了git rev list——计算我的本地分支,但它显示了一个非常高的数字,这不是我想要的(我大约有6次提交)
另外,git log--graph--all--decoration--oneline
没有给出我想要的
我认为问题在于我的本地分支
不是跟踪的远程分支
因此,我尝试使用git branch-u upstream/my local branch
手动设置,但返回错误:请求的上游分支“upstream/my local branch”不存在
为了解决这个问题,我当然可以将我的分支向上游推,但这会挫败我压榨我的提交的初衷
所以我觉得被卡住了。任何能够提供建议的人?git status
都会告诉您在跟踪的远程分支后面有多少次提交
使用git branch-u upstream/my local branch
在远程上设置跟踪是正确的,但是如果远程分支名称不同,则需要指定远程分支名称,并且必须存在
git checkout master
git branch -u upstream/remote-branch-name
Branch master set up to track remote branch remote-branch-name from upstream.
现在您应该会收到带有git状态的计数
git status
On branch master
Your branch is ahead of 'upstream/remote-branch-name' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
我认为你在这里的根本问题可能在于你看待“承诺的分支”(组成一个短语)的方式。或者,这可能只是因为你限制了你的“上游”概念
让我举例说明:
...--o--o--o--o <-- master, origin/master
这是在master
上添加一个commit之后的同一个存储库,该commit不在origin/master
上,因此分支master
是“前1”,正如git status
所说的那样
现在,让我们将master
放回原处,但保留新提交,将其添加到newbr
上,我们使用git checkout-b newbr
而不是将其添加到master
:
...--o--o--o--o <-- master, origin/master
\
o <-- newbr
要在远程origin
上创建newbr
,请指向本地master
指向的同一个提交。完成此操作后,origin/newbr
现在存在,因此现在可以将其设置为newbr
的上游
如果有更具体的提交(只能通过其哈希ID识别),您甚至可以使用它:
git push origin a123456:refs/heads/newbr
当通过原始SHA-1散列来识别提交时,您应该像这样拼写完整的引用名称,因为Git不能再使用您的本地名称来确定您想要的是一个分支还是一个标记。)如果您只有少量提交(比如少于10个左右),然后我只需使用git log
,并计算您想要包含的提交数量。如果你有几十次提交(糟糕的Git礼仪),那么可能有一种方法可以找到你没有做的最近的提交,并且你可以从那里开始计算,假设你在那之后做了所有的提交。相关:Git cherry-v origin/master | wc-l(但我不确定,这是最简单的方法)在这里回答
git push origin master:newbr
git push origin a123456:refs/heads/newbr