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时,这样做。

案例1:不关心当地的变化

  • 解决scheme1:获取最新的代码并重置代码

     git fetch origin git reset --hard origin/[tag/branch/commit-id usually: master] 
  • 解决scheme2:删除文件夹并再次克隆:D

     rm -rf [project_folder] git clone [remote_repo] 

案例2:关心当地的变化

  • 解决scheme1:与新的在线版本不冲突

     git fetch origin git status 

    将会报告如下内容:

     Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded. 

    然后得到最新版本

     git pull 
  • 解决scheme2:与新的在线版本冲突

     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正在删除这个修改。

这是一个将你的修改从你的工作副本移动到“隐藏”(如果事实上certificate你再次需要它们)的方法,那么你可以把最新的修改从上游拉下来。

 git stash git pull 

如果您想要检索文件(与上游更改和所有文件可能存在冲突),请运行git stash apply将这些更改git stash apply在代码顶部。 这样,你有一个“撤消”的方法。

你必须先合并你的文件。 做一个git status ,看看什么是需要合并的文件(意味着你需要先解决冲突)。 一旦完成,做git add file_merged并再次pull你。

如果你只是想扔掉你的工作文件夹中的所有东西(例如,失败或中止合并的结果),并恢复到一个干净的以前提交,做一个git reset --hard

我知道你想垃圾你的本地变化,并拉下你的遥控器上的东西?

如果一切都失败了,如果你(很可以理解)害怕“重置”,最简单的办法就是将原点复制到一个新的目录中,并将旧的目录废弃。

通过运行这个命令,你会得到最近的标签,通常是你的项目的版本:

 git describe --abbrev=0 --tags 

这听起来像你有core.autocrlf问题。 core.autocrlf = true可以给你像在Windows上描述的那样的问题,如果CRLF换行符被检入存储库。 尝试禁用资源库的core.autocrlf,并执行硬重置。