我在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
我不想做任何事情 - 我只想获得一份新的副本,不受任何我做过的本地修改。我该怎么做?
答案 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