无法自动从git中提取

时间:2017-02-23 16:00:28

标签: git bash

我有一个启动脚本,应该将机器上的git repo与master

同步
git pull -r origin master

获取

error: The following untracked working tree files would be overwritten by merge:
    file1.py
    Folder2/file3.rb
    Please move or remove them before you can merge.
    Aborting.

尝试使用

解决此问题
git clean -df
git clean -dn

git stash
git checkout master
git pull -r origin master
# to pull new branches
git fetch

仍然收到错误。 我怎样才能确保从主人那里获得成功?

[这是自动完成的。]

由于

3 个答案:

答案 0 :(得分:2)

如果您只想让本地副本中origin/master的内容丢弃任何本地更改,您有2个选项:

  • 您可以删除回购并再次克隆它。这是一项昂贵的操作(取决于仓库大小),但它保证您的本地副本中不存在远程仓库中的其他文件。
  • 或者您可以通过运行git fetch origin && git reset --hard origin/master来更新本地副本,从而放弃对跟踪文件的所有更改。这比完整克隆选项更快,因为它只需要获取本地没有的远程仓库中的新提交。这有一个小问题,即您的工作副本可能包含远程仓库中的更多文件。执行git clean -dffx将删除git未跟踪的所有内容,因此您最终会获得远程仓库的干净副本。

答案 1 :(得分:1)

  

错误:以下未跟踪的工作树文件将被合并覆盖:

如果您没有重要的本地更改,请使用hard reset local/master remote/master进行$ git fetch $ git reset --hard origin/master

hard reset

N.B:潜在的remote/master危险命令,因为它会丢弃所有未提交的更改以及未在$ git add . 中的本地提交。

替代方案:

添加未跟踪的文件。

stashing

通过reverts返回干净的工作目录。保持您的本地修改,HEAD commit工作目录与$ git stash 匹配。

$ git pull origin master

现在拉起源大师。

unsafe

答案 2 :(得分:0)

您已将这两个文件添加到存储库

file1.py
Folder2/file3.rb

并没有提交。因此,如果您不希望这些文件从您的存储库中手动删除这些文件。

之后你的脚本会正常工作

<强>更新

如果你想要通用的方式,

  • 要删除目录,请运行git clean -f -dgit clean -fd
  • 要删除被忽略的文件,请运行git clean -f -Xgit clean -fX
  • 要删除已忽略和未忽略的文件,请运行git clean -f -xgit clean -fx