Git拉不可能,未合并的文件

我已经阅读了所有关于这个问题的类似问题。 似乎没有任何以下工作:

Delete offending files git reset --hard HEAD git stash git pull 

几乎每一个组合,存储变化和从存储库拉,导致unmergable文件。 我想放弃所有本地更改,只是使用远程,但我不能克隆(带宽和互联网使用限制与开发商尝试这样做)。 我该怎么做呢?

刚试过:

 git stash git pull 

也没有工作。

更多信息

有一个本地提交,上游也有一个提交。 我已经尝试了git pull --rebase但是它仍然不能正常工作……这给了我一些错误 – “由于未解决的冲突而退出”。 如果我做git stash, git reset --hard HEAD, git pull --rebase ,我得到的错误“拉不可能,未合并的变化…”

说远程是origin ,分支是master ,并说你已经有master签出,可能会尝试以下几点:

 git fetch origin git reset --hard origin/master 

这基本上只是把当前的分支,并指向远程分支的HEAD

警告 :正如评论所述, 这将丢弃你的本地变化,覆盖原来的任何东西

或者你可以使用pipe道命令来做基本相同的事情:

 git fetch <remote> git update-ref refs/heads/<branch> $(git rev-parse <remote>/<branch>) git reset --hard 

编辑:我想简要解释为什么这个工程。

.git文件夹可以保存任意数量的存储库的提交。 由于提交散列实际上是提交内容的validation方法,而不仅仅是一个随机生成的值,所以它用于匹配存储库之间的提交集。

分支只是一个给定散列的命名指针。 这是一个示例集:

 $ find .git/refs -type f .git/refs/tags/v3.8 .git/refs/heads/master .git/refs/remotes/origin/HEAD .git/refs/remotes/origin/master 

这些文件中的每一个都包含指向提交的散列:

 $ cat .git/refs/remotes/origin/master d895cb1af15c04c522a25c79cc429076987c089b 

这些都是内部的git存储机制,并且独立于工作目录工作 。 通过执行以下操作:

 git reset --hard origin/master 

git会将当前分支指向与origin / master指向的hash值相同的值。 然后强制更改工作目录以匹配该散列处的文件结构/内容。

要在工作中看到这一点,请继续尝试以下操作:

 git checkout -b test-branch # see current commit and diff by the following git show HEAD # now point to another location git reset --hard <remote>/<branch> # see the changes again git show HEAD 

我有运气了

 git checkout -f <branch> 

在类似的情况下。

http://www.kernel.org/pub//software/scm/git/docs/git-checkout.html

在GIT中撤销删除

解决,使用以下命令集:

 git reset --hard git pull --rebase git rebase --skip git pull 

诀窍是重新设置更改…我们有一些麻烦重新绑定一个小的提交,所以我们只是跳过它使用git rebase –skip(在复制文件之后)。

假设你想扔掉你所有的改变,首先检查git status的输出。 对于旁边有“unmerged”的文件,运行git add <unmerged file> 。 然后跟进git reset --hard 。 除了未跟踪的文件之外,这将消除任何本地更改。

我用git解决了在本地删除未合并的文件。

 $ git rm <the unmerged file name> $ git reset --hard $ git pull --rebase $ git rebase --skip $ git pull Already up-to-date. 

之后我发送git commit:

 $ git commit . -m "my send commit" On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean