为什么git没有上传最后一次提交?

时间:2013-01-07 09:08:20

标签: git

我是git的新手,并以某种方式破坏了某些东西。这一切都始于冲突,然后我解决了它,再次添加了文件,并推了推。根据我的理解,这应该没问题。后来,当我制作一个新的克隆时,我已经很长时间没有下载该项目的版本了。当我试图拉动存储库时,我收到了一条消息Already up-to-date.。所以经过一番思考后我做了一个小小的改变,承诺并再次推动。为了测试它,我再次将一个新的克隆放到另一个目录中,突然得到了工作版本而没有进行最后的小改动。就像推送是最后一次提交背后的一个版本。我检查了HEAD文件:$ cat .git/HEAD输出为ref: refs/heads/master,这对我来说似乎没问题。我不知道在哪里看。

一位朋友问我是否用--force推进了,我没有。 (我不知道那会做什么)。

我还尝试将新克隆下载到新目录中,然后继续我的工作,但仍然保持相同的效果,推送是一次提交。

当我在提交中查看bitbucket时,我会得到类似这样的内容(M-me,F-friend如何在项目中与我合作)

        F--F--F---
       /          \
 ...--M---------M--M--M

修改

以下是要求的输出:

$ git pull
Password: 
Already up-to-date.
$ git branch -a -v
* master                9247247 [ahead 1] Martin test commit 1. (with -a flag)
  remotes/origin/HEAD   -> origin/master
  remotes/origin/master ddb4cbf Another try
$ git log --graph --format=%h
* 9247247
* ddb4cbf
* 9ec3835
* 2c5fd4c
*   e5dd998
|\  
| * 20bc5e1    (* This is the conflict I mentioned *)
| * 04a45a5
| * 7c57c81
* | 1d91307
|/  
* 223948e
* f43648d
*   a5ec578
|\  
| * 4e77b8b    (* This is a test conflict we made, to see how it works *)
* | 20fa9af
|/  
* ffe048d
* 90ea6fc
* 0e529f9
* 1622945
* 2207b8a

这导致我运行git loggit show都显示最后一次提交是Martin test commit 1.但我稍后在我写Martin test commit 2.

的地方做了提交

编辑2

另一个有线的事情:有一个修改过的文件,但no changes added to commit。什么?为什么? (git ls-files显示index.html文件 - 这意味着它正在上演吗?)

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   index.html
#
no changes added to commit (use "git add" and/or "git commit -a")

可能的原因:remotes/origin/HEAD -> origin/masterremotes/origin/master ddb4cbf Another try。如何让它们指向同一个提交?


编辑3

$ git push origin master
Password: 
Everything up-to-date
$ git remote -v
origin  https://martin@bitbucket.org/O....s.git (fetch)
origin  https://martin@bitbucket.org/O....s.git (push)

1 个答案:

答案 0 :(得分:2)

您的输出显示您尚未推送最新提交Martin test commit 1。试试git push

Martin test commit 2从未提交,或者已经提交给您的回购邮件的其他副本但从未被推送过。该变更集可能仍在您的本地目录中,请尝试git status查看尚未提交的内容。

编辑:

no changes added to commit上: 您的本地更改需要在提交之前暂存,您需要在git add index.html之前执行git commit。您还可以使用git commit -a

提交所有未暂存的更改

git ls-files上:这会显示索引中的文件和工作树中的文件。要查看提交的内容以及不提交的内容,请使用git status

on remotes:remotes/origin/HEAD/只是指向remotes/origin/master中最新提交的指针,因此它们已经指向同一个提交。

关于Everything up-to-date上的git push,事实并非如此。请添加git remote -v的输出。它可能是你的遥控器狡猾。也请尝试git push origin master