回答

收藏

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

技术问答 技术问答 367 人阅读 | 0 人回复 | 2023-09-11

如何强制覆盖本地文件git pull?: M7 u& Y3 _2 x0 |! o' N
场景如下:
, N- S6 J+ u9 U+ ]1 [9 Y- m一名团队成员正在修改我们正在开发的网站的模板, R3 a: {5 ]1 O9 U1 A. T/ c  B
他们正在向图像目录添加一些图像(但忘记在源代码控制下添加)
, ]& l; p( s4 f& i' A: o他们通过邮件向我发送图像* U" f, b" K$ H3 w" E" c
我在源代码控制下添加图像,并将其与其他更改一起推送到 GitHub$ I4 a' X/ E  N% f0 k3 Z0 @7 W" F
他们不能去 GitHub因为 Git 不想覆盖他们的文件。
这是我得到的错误:
8 s! W8 p0 q" Z5 D% u3 @错误:未跟踪的工作树文件public/images/icon.gif合并覆盖0 `4 G7 {8 H4 K! h
如何强制 Git 覆盖他们?这个人是设计师  - 通常,我会手动解决所有的冲突,所以服务器有最新版本,他们只需要在电脑上更新。0 J: M0 C! z7 U& d8 w
                                                                / H% n" A  X- d5 Z8 f# ~5 |, D& F
    解决方案:                                                               
8 L, v" [; K% |9 W- }+ G                                                                ? 重要提示:如果您有任何本地更改,它们将丢失。无论是否有--hard任何未推送的本地提交都将丢失。假如你有什么Git未跟踪文件(如上传的用户内容)不会受到影响。
) c; \/ Q0 C: S2 @首先,操作 fetch 将所有origin/
* J( H4 a/ e* l" b- v( ?refs最新更新:& t; n: \# t% l2 m. {
git fetch --all备份您当前的分支:
. {2 U9 ~: L% P6 ]git branch backup-master然后,你有两个选择:4 }# T9 W: A$ o- Y; @
git reset --hard origin/master或者如果你在其他分支机构:; ^7 R+ E' `7 _$ |" }( \
git reset --hard origin/+ r) b6 Y, d4 F8 l
解释:git fetch 从远程下载最新版本,而无需尝试合并或重新设置任何内容。4 _7 s! X1 K/ Q" \& v9 ?8 l
然后将git reset主分支重置为您刚刚获得的内容。--hard选项更改工作树中的所有文件以匹配origin/master
+ e, |$ Y" j  ?. G维护当前本地提交:值得注意的是,可以通过master在重置前创建一个分支来维护当前的本地提交:/ `1 {. D) t( ]* u: w, J
git checkout mastergit branch new-branch-to-save-current-commitsgit fetch --allgit reset --hard origin/master在此之后,所有旧的提交都将保存在new-branch-to-save-current-commits.2 `3 P& h: F* X. [: `0 R
未提交的变更但未提交的变更(即使是暂存的)也会丢失。确保存储并提交您需要的任何内容。因此,您可以操作以下命令:
9 K  k, O. k0 u# L7 x! `1 ^git stash然后重新应用这些未提交的变更:' P/ |0 e8 i  j& Y
git stash pop
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则