git:我如何获得我的代码的最新版本?
我正在使用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'.
我删除了该工具所抱怨的文件的本地副本,但我仍然收到错误消息。 如何从远程回购中检出最新版本? - 戴夫
如果您不关心任何本地更改(包括刚刚发生的未跟踪或生成的文件或子存储库),并且只想从回购中获取副本:
git reset --hard HEAD
git clean -xffd
git pull
再次,这将会导致您在本地做出的任何更改,请谨慎使用。 这样做时rm -Rf
考虑rm -Rf
。
案例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.
更多信息:如何使用'git reset --hard HEAD'恢复到以前的提交?
我怀疑发生了什么事情可能是因为你删除了你修改过的文件(因为你不关心这些修改),现在git正在删除这个修改。
这是一种将你的修改从你的工作副本移动到“隐藏”(如果事实证明你再次需要它们)的方法,那么你可以从上游取下最新的变化。
git stash
git pull
如果您想要检索文件(与上游更改和所有文件可能存在冲突),请运行git stash apply
将这些更改git stash apply
在代码顶部。 这样,你有一个“撤消”的方法。
上一篇: git: How do I get the latest version of my code?
下一篇: How to hash long passwords (>72 characters) with blowfish