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