git pull在两个消息之间交替,一个告诉我关于origin / HEAD(强制更新)和一个告诉我有关origin / master的消息

时间:2015-09-25 10:31:24

标签: git

我认为克隆我的存储库的新副本可以解决这个问题,但显然我错了:

alex@kallobombus:~/src$ git clone git@github.com:kensanata/face.git
Cloning into 'face'...
remote: Counting objects: 484, done.
remote: Compressing objects: 100% (457/457), done.
remote: Total 484 (delta 82), reused 423 (delta 24), pack-reused 0
Receiving objects: 100% (484/484), 1.40 MiB | 1.57 MiB/s, done.
Resolving deltas: 100% (82/82), done.
alex@kallobombus:~/src$ cd face
alex@kallobombus:~/src/face$ git pull
From github.com:kensanata/face
 + d88ddb7...1d9f4b3 HEAD       -> origin/HEAD  (forced update)
Already up-to-date.
alex@kallobombus:~/src/face$ git pull
From github.com:kensanata/face
   1d9f4b3..d88ddb7  master     -> origin/master
Already up-to-date.
alex@kallobombus:~/src/face$ git pull
From github.com:kensanata/face
 + d88ddb7...1d9f4b3 HEAD       -> origin/HEAD  (forced update)
Already up-to-date.
alex@kallobombus:~/src/face$ 

当我查看我的日志时,一切似乎都没问题:

alex@Megabombus:~/src/face (master %=)$ git log | head -n 2
commit d88ddb71534506b178cebd9c552441e0968fe590
Author: Alex Schroeder <alex@gnu.org>

在另一台机器上,我似乎没有这个问题:

alex@Megabombus:~/src/face (master %=)$ git log | head -n 2
commit d88ddb71534506b178cebd9c552441e0968fe590
Author: Alex Schroeder <alex@gnu.org>
alex@Megabombus:~/src/face (master %=)$ git pull
Already up-to-date.
alex@Megabombus:~/src/face (master %=)$ git pull
Already up-to-date.
alex@Megabombus:~/src/face (master %=)$ git pull
Already up-to-date.

第一台机器kallobombus出了什么问题?

结果是我总是必须拉两次

alex@kallobombus:~/src/face$ git pull
remote: Counting objects: 152, done.
remote: Compressing objects: 100% (136/136), done.
remote: Total 152 (delta 26), reused 142 (delta 16), pack-reused 0
Receiving objects: 100% (152/152), 285.01 KiB, done.
Resolving deltas: 100% (26/26), completed with 4 local objects.
From github.com:kensanata/face
   59f3bf1..978f6ca  master     -> origin/master
error: Ref refs/remotes/origin/master is at 978f6ca9912904c82274e5f91bddec3fb98882ff but expected 59f3bf1ee9703d50291703395920a3860b5e389a
 ! 59f3bf1...1d9f4b3 HEAD       -> origin/HEAD  (unable to update local ref)
make: *** [pull-face] Error 1
alex@kallobombus:~/src/face$ git pull
From github.com:kensanata/face
 + 978f6ca...1d9f4b3 HEAD       -> origin/HEAD  (forced update)
Updating 59f3bf1..978f6ca
Fast-forward
 README.md                                     |  112 +++++++++++++++++++++++++++++++++++++++++++++----
 ...

2 个答案:

答案 0 :(得分:2)

我曾经遇到类似的问题,这是因为有人在远程存储库中创建了一个名为HEAD的分支(并且在使用该远程存储库的所有计算机上都可以重现)。看起来,这也是你的情况:

$ git ls-remote 'https://github.com/kensanata/face.git'
d569da73560ce85fd870f7673b01f2385d55427f    HEAD
1d9f4b3769e2959e3033d4ff286f86851c34ef0c    refs/heads/HEAD     <- the problem
d569da73560ce85fd870f7673b01f2385d55427f    refs/heads/master

也许旧版本的git以不同的方式处理这种情况,但更新git不会完全解决这个问题,你需要删除该分支:

git push origin :refs/heads/HEAD

答案 1 :(得分:0)

答案是旧的git版本! git行为不端的服务器使用Debian Wheezy,即。 Debian 7。

alex@kallobombus:~/src/face$ git --version
git version 1.7.10.4

确保安装了后端:

alex@kallobombus:~/src/face$ grep backport /etc/apt/sources.list
deb http://ftp.de.debian.org/debian/ wheezy-backports main contrib non-free

所以我更新并升级了,没有更多问题!

alex@kallobombus:~/src/face$ sudo apt-get -t wheezy-backports install git
...
alex@kallobombus:~/src/face$ git --version
git version 1.9.1
alex@kallobombus:~/src/face$ git pull
Already up-to-date.
alex@kallobombus:~/src/face$ git pull
Already up-to-date.