Jam*_*ski 17 git merge pull reset
偶尔,当我做以下事情时......
git reset --hard
HEAD is now at 0123abde comment is hereRun Code Online (Sandbox Code Playgroud)
git pull
Updating 0123abde..456789faRun Code Online (Sandbox Code Playgroud)
我收到了错误......
error: Entry 'filename' not uptodate. Cannot merge.Run Code Online (Sandbox Code Playgroud)
我找到的唯一解决方法是'git reset --hard',删除有问题的文件,然后执行'git pull'.这对我来说似乎不对.不应该硬重置删除任何和所有本地更改,从而允许我拉出最新的没有任何合并问题?我使用git错了吗?:)
这是在CI计算机上,因此这里的任何更改都是不需要的.我在Windows Vista上使用git版本1.6.1.9.g97c34.
Von*_*onC 12
" Entry 'filename' not uptodate. Cannot merge." 背后的一般思想是:
您对工作目录中的文件进行了更改,如果要继续检出和更改新分支,这些文件将被覆盖,删除或以其他方式丢失.
据报道,此消息可能在时间上"虚假",(可能是因为" git pull" 在尝试合并之前没有刷新索引)但修复程序在Git1.6.1中.
但是,它可能仍然在mSysGit 1.6.1中,所以你看到更新的mSysGit版本会出现同样的错误吗?(如1.6.3)
这也可能发生因使用--skip-worktree或--assume-unchanged命令和git阻止你做:checkout,merge,rebase或pull。
如果我们采用以下方法,跳过的文件/目录可能不起作用:
git stashgit merge --abort, &git rm --cached这也不适用skipped于此命令将抛出的文件:fatal: pathspec [file] did not match any files相反在此处检查skipped文件的解决方案
$: git update-index --really-refresh
<file>: needs update
Run Code Online (Sandbox Code Playgroud)
如果要删除skipped本地或未跟踪的目录/文件,则可选
$: git reset --hard
Run Code Online (Sandbox Code Playgroud)
如果以上命令都没有解决问题,您只需从skipped树中撤消文件,例如:
$: git update-index --no-skip-worktree [file]
Run Code Online (Sandbox Code Playgroud)
如果您skipped是目录,请到此处详细了解如何递归跳过/撤消,例如:
find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --skip-worktree" \;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16802 次 |
| 最近记录: |