Git拉忽视局部变化?

有没有办法做一个git pull忽略任何本地文件的变化,而不是吹拂目录,不得不执行git clone

如果你的意思是你想拉动覆盖本地的改变,就像工作树干净的一样进行合并,那么清理工作树:

 git reset --hard git pull 

如果有未跟踪的本地文件,你可以使用git clean来删除它们。 使用git clean -f删除未跟踪的文件, -df删除未跟踪的文件和目录, -xdf删除未跟踪或忽略的文件或目录。

另一方面,如果想要保持本地修改,则在拉动之前使用藏匿的方式将其隐藏起来,然后再重新应用:

 git stash git pull git stash pop 

我认为从字面上忽略这些改变是没有任何意义的,尽pipe拉一半是合并的,并且需要将提交的内容版本与其提取的版本合并。

对我来说,以下工作:

(1)首先取所有变化:

 $ git fetch --all 

(2)然后重置主设备:

 $ git reset --hard origin/master 

(3)拉/更新:

 $ git pull 

命令波纹pipe不会总是工作 。 如果你只是做:

 $ git checkout thebranch Already on 'thebranch' Your branch and 'origin/thebranch' have diverged, and have 23 and 7 different commits each, respectively. $ git reset --hard HEAD is now at b05f611 Here the commit message bla, bla $ git pull Auto-merging thefile1.c CONFLICT (content): Merge conflict in thefile1.c Auto-merging README.md CONFLICT (content): Merge conflict in README.md Automatic merge failed; fix conflicts and then commit the result. 

等等…

真正重新开始,下载分支并覆盖所有本地更改,只需执行以下操作:


 $ git checkout thebranch $ git reset --hard origin/thebranch 

这将工作得很好。

 $ git checkout thebranch Already on 'thebranch' Your branch and 'origin/thebranch' have diverged, and have 23 and 7 different commits each, respectively. $ git reset --hard origin/thebranch HEAD is now at 7639058 Here commit message again... $ git status # On branch thebranch nothing to commit (working directory clean) $ git checkout thebranch Already on 'thebranch' 

看看git储存所有你的本地更改到“存储文件”,并恢复到最后一次提交。 此时,您可以应用您的隐藏更改,或丢弃它们。

如果你在Linux上:

 git fetch for file in `git diff origin/master..HEAD --name-only`; do rm -f "$file"; done git pull 

for循环将删除所有在本地回购库中更改的跟踪文件,所以git pull将毫无问题地工作。
最好的事情是,只有被跟踪的文件将被repo中的文件覆盖,所有其他文件将保持不变。

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

这将获取当前分支,并试图快速掌握:

 git fetch && git merge --ff-only origin/master