git push merge错误,但git pull已经是最新的。试过回复,同样的问题

时间:2010-04-11 08:59:02

标签: git

我做:

$ git commit .
$ git push
error: Entry 'file.php' not uptodate. Cannot merge.

然后我做

$ git pull
Already up-to-date.

我该怎么办?我只想从远程副本中获取最新版本,并覆盖我本地副本上的任何内容。

编辑:我尝试了一切。我删除了我的本地仓库,

$ git clone ssh://root@something.com/directory
...
Checking out files: 100%, done.

$ git status
On branch master
nothing to commit (working directory clean)

一切看起来都不错吧?拉以防万一。

$ git pull
Already up-to-date.

我在文件中进行了一行更改,看看是否可以推送它。

$ git commit .
[master 1e18af1] Rando change
1 files changed, 2 insertions(+), 0 deletions(-)

$ git push
Counting objects: 13, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 646 bytes, done.
Total 7 (delta 3), reused 0 (delta 0)
From /directory
d6d61aa..1e18af1  master     -> origin/master
error: Entry 'someotherfile.php' not uptodate. Cannot merge.
Updating b8f9a54..1e18af1
To  ssh://root@something.com/directory
d6d61aa..1e18af1  master -> master

不知道发生了什么事!我怎样才能正常提交/拉出?非常感谢!

5 个答案:

答案 0 :(得分:4)

再次尝试git checkout file.php然后git push

更新

  • git pull告诉分支机构是最新的吗?
  • git status没有显示任何未合并的文件?
  • git commit有效吗?

如果您对上述所有内容回答,并且即使在远程存储库的干净副本(阅读git push)之后您的git clone仍然失败,则很可能是远程存储库有索引问题。

答案 1 :(得分:2)

这只是一种预感,但你的遥控器是一个裸仓库还是工作目录?如果它是工作目录而不是裸仓库,则远程上的file.php文件具有未提交的更改。您的git push命令试图推进远程的HEAD,导致由于未提交的更改而导致冲突。

这就是您通常git pull更新工作目录,并在裸存储库上使用git push的原因。仅供参考,为了设置一个类似于中央CVS / SVN / etc repo的裸仓库,请在遥控器上执行以下操作:

$ mkdir my-git-repo
$ cd my-git-repo
$ git init --bare

然后在你当地的回购中:

$ cd my-git-repo.git
$ git remote add origin user@host:/path/to/my-git-repo/
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master
$ git push origin master

现在你有一个可以推送/拉入包含你的主分支的裸仓库。您可以使用要放在遥控器上的任何其他本地分支重复最后三个本地步骤。克隆与以前相同,您不需要使用git config,因为当您使用跟踪分支时,会自动设置遥控器并设置远程合并参考。

希望有所帮助。

答案 2 :(得分:1)

尝试执行git status并检查您是否对'file.php'进行了任何未提交的更改。您需要提交相同文件的所有更改,否则git可能会更改您的非提交文件。

尝试在pull之后再次提交,然后尝试再次提取,检查任何可能的合并并推送数据。

如果您只想覆盖本地副本,请将文件file.php(git checkout HEAD^ file.php检查到最后一个版本之前的版本)签出到以前的版本,然后从存储库中提取。

答案 3 :(得分:1)

我会将我的file.php剪切并粘贴到工作文件夹中。我们可以说到桌面。

然后执行pull,然后git应该从服务器获取最新的file.php。然后只需粘贴你的file.php副本并覆盖拉出的版本或打开两个版本,然后粘贴你的更改。

我希望这样做。

答案 4 :(得分:0)

你确定你没有file.php一个不同的案例吗? (File.phpfile.PHP ...),如this answer

  • 一个已经提交
  • 一个在你的工作目录上,有一个不同的案例。