git:我如何获得最新版本的代码?

Dav*_*ave 188 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'.
Run Code Online (Sandbox Code Playgroud)

我删除了该工具抱怨的文件的本地副本,但我仍然得到错误.如何查看远程仓库的最新版本? - 戴夫

Ale*_*tis 245

如果您不关心任何本地更改(包括刚刚发生在这里的未跟踪或生成的文件或子存储库),只需要来自repo的副本:

git reset --hard HEAD
git clean -xffd
git pull
Run Code Online (Sandbox Code Playgroud)

同样,这将会破坏您在本地所做的任何更改,因此请谨慎使用.想一想rm -Rf这样做.

  • `git clean -f`并不是答案的一部分.它将删除未保存在存储库中的文件(例如,在我的情况下,日志文件); 你不需要做这个让'git pull`再次工作,只需`git reset --hard HEAD`就足够了. (27认同)
  • Esh,man,不建议少数几个删除git新手的命令之一. (9认同)
  • @DarrenCook我认为`git clean -f`非常重要,如果你想要真正的**清理你的repositoy.它相当于在TFS中执行"从文件夹中删除全部 - >获取最新版本/获取特定",在我的情况下,这就是我想要的. (6认同)
  • @Darren我认为git clean -f``也很重要.我想获得最新版本,并且不想保留过时的缓存条目或其他不在repo上的生成资源.答案很明显,它将删除本地更改并模仿repo中的最后一个版本,因此它看起来很完美.如果我真的需要在更新之间保留它们,我会将我的日志文件移动到其他地方. (3认同)

tvl*_*tvl 215

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

案例2:关注当地的变化

更多信息: 如何使用'git reset --hard HEAD'恢复到之前的提交?

  • 这应该是公认的答案. (4认同)
  • 这个答案比已经被接受为答案的投票更具吸引力。 (3认同)
  • git fetch的最佳完整答案。该帖子应被锁定 (3认同)

Kzq*_*qai 17

我怀疑发生了什么可能是你删除了你修改过的文件(因为你不关心那些更改),现在git将删除作为一个更改.

这是一种方法,可以将您的更改从您的工作副本中移出并进入"存储"(如果它实际上已经再次需要它们,则可以检索),这样您就可以从上游获取最新的更改.

git stash  
git pull
Run Code Online (Sandbox Code Playgroud)

如果您想要检索文件(与上游更改和所有文件的潜在冲突),请运行a git stash apply以在代码之上粘贴这些更改.这样,你就有了"撤消"的方法.


Ami*_*agh 8

试试这个代码

cd /go/to/path
git pull origin master
Run Code Online (Sandbox Code Playgroud)

  • 欢迎使用 Stackoverflow!请考虑在您的解决方案中添加一些解释,以更好地描述它如何解决问题。这将使您的答案更加有用 (6认同)

Amo*_*tir 7

您必须先合并文件.做一个git status以查看需要合并的文件是什么(意味着您需要先解决冲突).一旦这样做,做git add file_merged,做你的pull一次.

  • 谢谢.我正面临这个问题.我的工作文件有一些变化,我不想提交.但在这种情况下我不能做一个git pull.所以我这样做 - git stash,git pull --rebase,git stash pop.然后手动合并并git添加file_merged (2认同)