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

atp*_*atp 5 git

我做:

$ git commit .
$ git push
error: Entry 'file.php' not uptodate. Cannot merge.
Run Code Online (Sandbox Code Playgroud)

然后我做

$ git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

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

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

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

$ git status
On branch master
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

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

$ git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

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

小智 2

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

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

$ 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 configbranch.master.merge refs/heads/master
$ git Push 原点大师

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

希望有帮助。