2017-02-23 74 views
1

我有一个应该与主无法从混帐拉自动

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 
同步机器上的git仓库启动脚本

仍然出现错误。 我如何确保成功从主人拉?

[这是自动完成的。]

感谢

+1

我想你想合并'master'在你当前的分支。因为如果你只是想拥有主人的内容,你可以删除回购,并再次克隆(昂贵),或者只是'git fetch origin && git reset --hard origin/master'(便宜) –

+0

谢谢@CarlosCampderrós。有效。写它作为答案,我会批准 – WebQube

+0

我已经用稍长的解释创建了一个答案 –

回答

2

如果你只是想有从origin/master内容在您的本地副本丢弃任何局部的变化,你有两个选择:

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

您已经将这两个文件添加到资料库,

file1.py 
Folder2/file3.rb 

,并没有提交。所以,如果你不希望这些文件从你的资料库&手动删除这些文件,脚本将正常工作后

更新

如果你想有一个通用的方法,

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

感谢DilumN,我正在寻找更通用的解决方案。一种会强制git软件无论如何都是从主控制器拉出来的。我知道手动解决方案。 – WebQube

+0

更新了答案 – DilumN

1

error: The following untracked working tree files would be overwritten by merge:

如果没有当地重要的变化再做hard resetlocal/masterremote/master

$ git fetch 
$ git reset --hard origin/master 

N.B:潜在危险hard reset命令,因为它扔掉,在remote/master没有您所有的未提交的更改和本地提交。


备选:

添加未跟踪文件。

$ git add . 

回到干净的工作目录stashing。保留您的本地修改,并将reverts的工作目录与HEAD commit相匹配。

$ git stash 

现在拉起源主。

$ git pull origin master 
+0

嗨sajib,'git add .'没有用。最终使用'git fetch origin && git reset --hard origin/master' – WebQube

+0

好的。 '硬重置'也是另一种解决方案(可能有点危险)。更新了我的答案。 –