我是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 log
和git show
都显示最后一次提交是Martin test commit 1.
但我稍后在我写Martin test commit 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/master
但remotes/origin/master ddb4cbf Another try
。如何让它们指向同一个提交?
$ 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)
答案 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
。