Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 显示本地(非跟踪)分支上未推送的提交数_Git_Github_Version Control - Fatal编程技术网

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