我做:
$ 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
我不知道发生了什么事!我怎样才能正常提交/拉出?非常感谢!
答案 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.php
或file.PHP
...),如this answer?