Git Pull& amp; Git Push

时间:2016-10-27 04:44:00

标签: git github ssh git-push git-pull

它是共享的GIT存储库。许多人在使用Same git Repository。

这就是为什么我先尝试git pull进行其他更改add, commit & push

我在本地

尝试了以下命令
$ git pull
error: Your local changes to the following files would be overwritten by merge:

File Name

Please commit your changes or stash them before you can merge.
Aborting

提交

$ git commit

no changes added to commit

推送

$ git push
To ssh://git@ab.com:2222/diffusion/SMM/abc.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://git@ab.com:2222/diffusion/SMM/abc.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我最近遇到了同样的问题。您可能忽略了此文件(.gitignore.git/info/exclude),或者您认为该文件未更改(git update-index --assume-unchanged)。

您可以使用git check-ignore -v "File Name"检查文件是否被忽略。 如果ls "File Name没有返回错误,那么文件就在那里但是假设没有被git改变。您可以使用git update-index --no-assume-unchanged假设它已被更改。

答案 1 :(得分:1)

所以你的问题是工作目录中有未跟踪的文件,你也试图提取。

因此文件Some File位于您的工作目录中,但有人将具有相同名称的文件推送到服务器。当您拉动时,它将使用远程存储库中的版本覆盖您的本地文件:Your local changes to the following files would be overwritten by merge

要解决此问题,您可以做两件事:

  • 移开文件,拉出,有两个版本
  • git add文件,git commitgit pull将您的本地更改与上游合并

另外,请阅读staging area。在提交之前,您需要将文件添加到临时区域。这就是为什么git commit告诉你没有任何进行提交的原因。 git commit只会将您放入暂存区域的内容提交。

答案 2 :(得分:0)

你应该花点时间了解git是如何工作的(良好的资源[1])。特别是,能够看到整个git历史记录是至关重要的,请使用以下命令或git UI(gitkgit-gui):

git log --oneline --graph --all --decorate

简而言之,可能:git pull --rebase对您有效(如果您没有相互矛盾的更改)。

[1] https://git-scm.com/book/en/v2