我正在使用Git 1.7.4.1。我想从存储库中获取最新版本的代码,但是我收到了错误......
$ git pull
….
M selenium/ant/build.properties
….
M selenium/scripts/linux/get_latest_updates.sh
M selenium/scripts/windows/start-selenium.bat
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'.
我删除了该工具抱怨的文件的本地副本,但我仍然收到错误。如何查看远程仓库的最新版本? - 戴夫
答案 0 :(得分:236)
如果您不关心任何本地更改(包括刚刚发生在这里的未跟踪或生成的文件或子存储库),只需要来自回购的副本:
git reset --hard HEAD
git clean -xffd
git pull
同样,这将会破坏您在本地所做的任何更改,因此请谨慎使用。这样做时要考虑rm -Rf
。
答案 1 :(得分:193)
案例1:不关心当地的变化
解决方案1:获取最新代码并重置代码
git fetch origin
git reset --hard origin/[tag/branch/commit-id usually: master]
解决方案2:删除文件夹并再次克隆:D
rm -rf [project_folder]
git clone [remote_repo]
案例2:关注本地变化
解决方案1:与新在线版
没有冲突git fetch origin
git status
将报告类似:
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
然后获取最新版本
git pull
解决方案2:与新版在线版冲突
git fetch origin
git status
将报告类似:
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 add .
git commit -m ‘Commit msg’
尝试获取更改(将失败)
git pull
将报告类似:
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
打开冲突文件并修复冲突。然后:
git add .
git commit -m ‘Fix conflicts’
git pull
将报告类似:
Already up-to-date.
更多信息: How do I use 'git reset --hard HEAD' to revert to a previous commit?
答案 2 :(得分:17)
我怀疑发生的事情可能是您删除了您修改的文件(因为您并不关心这些更改),现在git将删除视为一个更改
这是一种方法,可以将您的更改从您的工作副本移到&#34; stash&#34; (如果它实际上发现您再次需要它们,则可以检索),这样您就可以从上游获取最新的更改。
git stash
git pull
如果您想要检索文件(可能与上游更改有冲突),请运行git stash apply
将这些更改放在代码之上。这样,你有一个&#34;撤消&#34;方法
答案 3 :(得分:7)
您必须先合并文件。执行git status
以查看需要合并的文件是什么(意味着您需要先解决冲突)。完成此操作后,请git add file_merged
再次执行pull
。
答案 4 :(得分:2)
如果您只想丢弃工作文件夹中的所有内容(例如,合并失败或中止的结果)并恢复到干净的先前提交,请执行git reset --hard
。
答案 5 :(得分:2)
试试这段代码
cd /go/to/path
git pull origin master
答案 6 :(得分:1)
我了解您想要删除本地更改并删除遥控器上的内容?
如果所有其他方法都失败了,如果你(完全可以理解)害怕“重置”,最简单的事情就是将原点克隆到一个新目录中并丢弃旧目录。
答案 7 :(得分:1)
通过运行此命令,您将获得通常是项目版本的最新标记:
git describe --abbrev=0 --tags
答案 8 :(得分:1)
要回答您的问题,只需两个步骤:-
git pull
git checkout -- .
清理具有未暂存更改的本地工作目录
.这将显示来自远程 git 存储库的本地存储库中的最新更改。清除所有本地未暂存的更改。请注意 git checkout -- .
将放弃您在本地工作目录中的所有更改。如果您想放弃选择性文件的任何更改,请使用 git checkout -- <filename>
。如果您不想丢失未暂存的更改,请使用 git stash
,因为它会清除本地工作目录中所有未暂存的更改,同时在将来需要时保存它。
答案 9 :(得分:0)
听起来像你有core.autocrlf问题。如果将CRLF换行符检入存储库,core.autocrlf = true可能会出现您在Windows上描述的问题。尝试禁用存储库的core.autocrlf,然后执行硬重置。
答案 10 :(得分:0)
如果您使用的是Git GUI,请先获取然后合并。
通过“远程”菜单>>“提取” >>“来源”进行提取。 通过“合并”菜单>>“合并本地”。
出现以下对话框。
选择跟踪分支单选按钮(默认情况下也选中),将黄色框保留为空,然后按合并,这将更新文件。
在执行这些步骤之前,我已经还原了一些本地更改,因为无论如何我都希望丢弃这些更改,因此以后不必通过合并消除。
答案 11 :(得分:0)
如果上述命令不能帮助您使用此方法: