为了账号安全,请及时绑定邮箱和手机立即绑定

如何强制“git拉”覆盖本地文件?

如何强制“git拉”覆盖本地文件?

Git
白衣非少年 2019-06-06 15:32:30
如何强制“git拉”覆盖本地文件?如何强制将本地文件覆盖到git pull?设想如下:一个团队成员正在修改我们正在开发的网站的模板。他们正在将一些图像添加到图像目录中(但忘记了在源代码管理下添加它们)他们将把这些图像邮寄给我,稍后再寄给我。我在源代码管理下添加图像,并将它们与其他更改一起推送到GitHub他们不能从GitHub中提取更新,因为Git不想覆盖他们的文件。这就是我遇到的错误:错误:未跟踪的工作树文件‘public/imag.gif’将被Merge覆盖我怎么才能强迫Git覆盖它们呢?这个人是一个设计师-通常我用手解决所有的冲突,所以服务器有最新的版本,他们只需要在他们的电脑上更新。
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

重要:如果您有任何本地更改,它们将丢失。有或没有--hard选项,任何未被推送的本地提交都将丢失。[*]

如果您有任何文件通过Git跟踪(例如上传用户内容),这些文件不会受到影响。


我认为这是正确的方法:

git fetch --all

然后,你有两个选择:

git reset --hard origin/master

或者如果你在其他分支机构:

git reset --hard origin/<branch_name>

说明:

git fetch从远程下载最新版本,而不尝试合并或重基任何内容。

然后git reset将主分支重置为您刚刚获取的内容。这个--hard选项将工作树中的所有文件更改为与origin/master


维护当前本地提交

[*]值得注意的是,可以通过创建一个分支来维护当前的本地提交master重置前:

git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master

在此之后,所有旧的提交都将保存在new-branch-to-save-current-commits.

未提交的更改

然而,未提交的更改(甚至是阶段性的)将丢失。一定要藏起来,做任何你需要的事。为此,可以运行以下操作:

git stash

然后重新应用这些未提交的更改:

git stash pop


查看完整回答
反对 回复 2019-06-06
?
Qyouu

TA贡献1786条经验 获得超11个赞

试试这个:

git reset --hard HEAD
git pull

它应该能做你想做的事。


查看完整回答
反对 回复 2019-06-06
?
翻阅古今

TA贡献1780条经验 获得超5个赞

警告:git clean删除所有未跟踪的文件/目录,但无法撤消。


有时只是clean -f帮不上忙。如果您有未跟踪的目录,还需要-d选项:

# WARNING: this can't be undone!

git reset --hard HEAD
git clean -f -d
git pull

警告:git clean删除所有未跟踪的文件/目录,但无法撤消。

考虑使用-n (--dry-run)旗子第一。这将向您展示哪些内容将被删除,而不实际删除任何内容:

git clean -n -f -d

示例输出:

Would remove untracked-file-1.txt
Would remove untracked-file-2.txt
Would remove untracked/folder
...


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 2087 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信