Git ';你的分行在';原点/主控';由1提交';关于显式推

Git ';你的分行在';原点/主控';由1提交';关于显式推,git,Git,我是git新手,无法理解以下行为: 我在本地克隆了一个bitbucket repo,然后在本地修改并提交,然后推送到远程repo。如果我做一个隐式推送,或者“推送原点”,就没有问题了。如果我使用显式远程url推送,我会收到状态消息“您的分支比“origin/master”提前1次提交” git似乎不承认显式地址与源地址相同,那么到底发生了什么呢。如果我再做一次隐式推送,它什么也不做,但它确实清除了所说的信息 下面是一个示例会话: baz@bhost:/more/coding/git-tests/

我是git新手,无法理解以下行为:

我在本地克隆了一个bitbucket repo,然后在本地修改并提交,然后推送到远程repo。如果我做一个隐式推送,或者“推送原点”,就没有问题了。如果我使用显式远程url推送,我会收到状态消息“您的分支比“origin/master”提前1次提交”

git似乎不承认显式地址与源地址相同,那么到底发生了什么呢。如果我再做一次隐式推送,它什么也不做,但它确实清除了所说的信息

下面是一个示例会话:

baz@bhost:/more/coding/git-tests/ask1$ git --version
git version 1.7.2.5

baz@bhost:/more/coding/git-tests$ git clone https://shishani@bitbucket.org/shishani/dirasi.git ask1
Cloning into ask1...
Password: 
remote: Counting objects: 24054, done.
remote: Compressing objects: 100% (6300/6300), done.
remote: Total 24054 (delta 17124), reused 24024 (delta 17106)
Receiving objects: 100% (24054/24054), 11.83 MiB | 251 KiB/s, done.
Resolving deltas: 100% (17124/17124), done.

baz@bhost:/more/coding/git-tests$ cd ask1

baz@bhost:/more/coding/git-tests/ask1$ jed setup.py

baz@bhost:/more/coding/git-tests/ask1$ git commit -a
[master a053f28]    modified:   setup.py
 1 files changed, 1 insertions(+), 0 deletions(-)

baz@bhost:/more/coding/git-tests/ask1$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

baz@bhost:/more/coding/git-tests/ask1$ git remote show origin
Password: 
* remote origin
  Fetch URL: https://shishani@bitbucket.org/shishani/dirasi.git
  Push  URL: https://shishani@bitbucket.org/shishani/dirasi.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

baz@bhost:/more/coding/git-tests/ask1$ git push
Password: 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 314 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: bb/acl: shishani is allowed. accepted payload.
To https://shishani@bitbucket.org/shishani/dirasi.git
   5e9ffd1..a053f28  master -> master

baz@bhost:/more/coding/git-tests/ask1$ git status
# On branch master
nothing to commit (working directory clean)

baz@bhost:/more/coding/git-tests/ask1$ jed setup.py

baz@bhost:/more/coding/git-tests/ask1$ git commit -a
[master 6d0e236]    modified:   setup.py
 1 files changed, 1 insertions(+), 0 deletions(-)

baz@bhost:/more/coding/git-tests/ask1$ git push https://shishani@bitbucket.org/shishani/dirasi.git master
Password: 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 298 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: bb/acl: shishani is allowed. accepted payload.
To https://shishani@bitbucket.org/shishani/dirasi.git
   a053f28..6d0e236  master -> master

baz@bhost:/more/coding/git-tests/ask1$ git status
# On branch master
**# Your branch is ahead of 'origin/master' by 1 commit.** <-- this does not reflect current state
#
nothing to commit (working directory clean)

baz@bhost:/more/coding/git-tests/ask1$ git push
Password: 
Everything up-to-date

baz@bhost:/more/coding/git-tests/ask1$ git status
# On branch master
nothing to commit (working directory clean)
baz@bhost:/more/coding/git tests/ask1$git--version
git版本1.7.2.5
baz@bhost:/more/coding/git tests$git clonehttps://shishani@bitbucket.org/shishani/dirasi.git ask1
克隆到ask1。。。
密码:
远程:计数对象:24054,完成。
远程:压缩对象:100%(6300/6300),完成。
远程:总计24054(增量17124),重复使用24024(增量17106)
接收对象:100%(24054/24054),11.83 MiB | 251 KiB/s,完成。
解析增量:100%(17124/17124),完成。
baz@bhost:/more/coding/git tests$cd ask1
baz@bhost:/more/coding/git tests/ask1$jed setup.py
baz@bhost:/more/coding/git tests/ask1$git commit-a
[master a053f28]已修改:setup.py
1个文件已更改,1个插入(+),0个删除(-)
baz@bhost:/more/coding/git tests/ask1$git status
#论分行行长
#您的分支比“原始/主分支”早1个提交。
#
没有要提交的内容(工作目录清理)
baz@bhost:/more/coding/git tests/ask1$git remote show origin
密码:
*远源
获取URL:https://shishani@bitbucket.org/shishani/dirasi.git
推送URL:https://shishani@bitbucket.org/shishani/dirasi.git
总支:硕士
远程分支:
主跟踪
为“git pull”配置的本地分支:
主机与远程主机合并
为“git推送”配置的本地引用:
主机推送到主机(快进)
baz@bhost:/more/coding/git tests/ask1$git push
密码:
计数对象:5,完成。
增量压缩最多使用2个线程。
压缩对象:100%(3/3),完成。
写入对象:100%(3/3),314字节,完成。
总计3(增量2),重复使用0(增量0)
远程:bb/acl:shishani是允许的。接受的有效载荷。
到https://shishani@bitbucket.org/shishani/dirasi.git
5e9ffd1..a053f28主控->主控
baz@bhost:/more/coding/git tests/ask1$git status
#论分行行长
没有要提交的内容(工作目录清理)
baz@bhost:/more/coding/git tests/ask1$jed setup.py
baz@bhost:/more/coding/git tests/ask1$git commit-a
[master 6d0e236]已修改:setup.py
1个文件已更改,1个插入(+),0个删除(-)
baz@bhost:/more/coding/git tests/ask1$git pushhttps://shishani@bitbucket.org/shishani/dirasi.git master
密码:
计数对象:5,完成。
增量压缩最多使用2个线程。
压缩对象:100%(3/3),完成。
写入对象:100%(3/3),298字节,完成。
总计3(增量2),重复使用0(增量0)
远程:bb/acl:shishani是允许的。接受的有效载荷。
到https://shishani@bitbucket.org/shishani/dirasi.git
a053f28..6d0e236主控->主控
baz@bhost:/more/coding/git tests/ask1$git status
#论分行行长

**#您的分支比“origin/master”提前了1次提交。**我认为您需要在git
git
意识到远程端已经更新之前将更改拉回来。您可以通过快速
git pull
(或者,如您在示例中所示,通过
git push
将其推送到跟踪的原点)来完成此操作

您还可以手动更改
refs/remotes/origin
指向的提交


期望内容跟踪器识别存储库的任意远程同义词是不公平的;想象一下,如果您有五个不同的URL,它们都是相同的服务器端存储库。当您推进回购A时,是否意味着您的变更已提交回购B(您分支机构的来源)?git没有办法知道。相反,它只在两种情况下更新远程磁头引用:拉和推到默认目标。

是的,在这种情况下,您必须执行
git fetch
git fetch origin
。Git不在乎你推到哪里,当报告你领先多少次提交的状态时,只有远程(和远程跟踪分支)才是最重要的。

当状态显示
你的分支比'origin/master'领先1次提交时,它实际上意味着
origin/master
。也就是说,在您的repo中有一个名为
origin/master
的指针,指向提交,该提交是
远程分支的
,并且您的
master
位于该提交之前

对于您的repo识别的所有远程设备,如果您拉/推/取,它将在repo中创建一个
/
指针。它只是一个指向提交的指针,如果您尝试
签出
该分支,您只会处于分离状态

显然,当您执行
git-push
git-push-origin-master
时,该指针会得到更新,但显式地推送到url不会更新该指针,因此也不会更新状态

如果在推到url后只执行
git fetch
git pull
,则在这种情况下,状态消息也将消失

注意:如果您有多个遥控器,并且您将您的分支设置为跟踪其他远程分支,比如说
上游主机
,那么在这种情况下,您的状态消息将是,例如,
您的分支在“上游主机”之前提交1次
。因此,只有被跟踪的远程分支进行了比较。请参见
git config
以查看当前分支跟踪的远程分支。

请注意,自2012年12月以来,git:

当“
git checkout
”签出分支时,它会告诉用户新分支相对于它所建立的远程跟踪分支落后(或领先)多远。
if (advice_status_hints)
+      strbuf_addf(sb,
+        _("  (use \"git push\" to publish your local commits)\n"));