如何从分支中提取代码的最新副本?

时间:2015-09-01 14:39:11

标签: git

我在Mac 10.9.5上使用Git,并希望下载分支中最新版本的内容。我不关心我所做的任何局部变化 - 我很乐意放弃所有这些变化。现在我跑的时候

git pull origin branch-name

我收到错误,如

Please, commit your changes or stash them before you can merge.
error: The following untracked working tree files would be overwritten by merge:
    src/main/java/com/myco/classroom/dto/ClassroomCourseDto.java
    src/main/java/com/myco/clever/dto/CleverClassroomUserDto.java
    src/main/java/com/myco/clever/exception/MissingUserException.java

我不想做任何事情 - 我只想获得一份新的副本,不受任何我做过的本地修改。我该怎么做?

5 个答案:

答案 0 :(得分:3)

如果您做错了什么,可以使用命令

替换本地更改

git checkout --

这将使用HEAD中的最后一个内容替换工作树中的更改。 已保留已添加到索引的更改以及新文件。

如果您想要删除所有本地更改和提交,请从服务器获取最新历史记录并将本地主分支指向此处

git fetch origin git reset --hard origin/master

如果您需要有关git的更多帮助,请访问此网站:http://rogerdudler.github.io/git-guide/

答案 1 :(得分:2)

您需要进行本地更改"藏匿"在拉动变化之前。

一种方法是:

git stash
git pull origin branch-name
git stash pop

现在,您将被要求将您的本地更改与从服务器获得的更改合并。

请注意,一旦stash pop必须pull,您只需离开存储空间而无需合并之前的更改。

答案 2 :(得分:2)

Git force pull to overwrite local files

git fetch --all
git reset --hard origin/master
git pull origin master

答案 3 :(得分:0)

如果您不介意丢失任何更改,您还可以git checkout包含更改的文件,但这可能会花费更多时间,具体取决于您所做的更改量,并且不会保存更改以供将来参考,例如git stash

答案 4 :(得分:0)

git stash是你想要使用的。

  

如果要记录工作目录和索引的当前状态,但想要返回干净的工作目录,请使用git stash。该命令将保存您的本地修改并恢复工作目录以匹配HEAD提交。

甚至有一个类似于你情况的例子:

  

拉入一棵肮脏的树

     

当您处于某种状态时,您会发现存在可能与您正在进行的操作相关的上游更改。当你的本地变化与上游的变化不冲突时,一个简单的git pull将让你前进。

     

但是,在某些情况下,您的本地更改会与上游更改发生冲突,并且git pull会拒绝覆盖您的更改。在这种情况下,你可以隐藏你的更改,执行拉动,然后解除静止,如下所示:

$ git pull
 ...
file foobar not up to date, cannot merge.
$ git stash
$ git pull
$ git stash pop