2

我是 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.


编辑 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。我怎样才能让他们指向同一个提交?


编辑 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)
4

1 回答 1

2

您的输出显示您尚未推送最新的提交,Martin test commit 1. 尝试一个git push.

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

编辑:

On no changes added to commit:您的本地更改需要在提交之前暂存,您需要在做git add index.html之前做git commit。您也可以使用提交所有未暂存的更改git commit -a

On git ls-files:这显示索引中的文件和工作树中的文件。要查看提交提交的内容和未提交的内容,请使用git status.

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

关于Everything up-to-dateon git push,不是。请添加 的输出git remote -v。可能是你的遥控器不可靠。也试试git push origin master

于 2013-01-07T11:14:50.783 回答