回答

收藏

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

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

如何强制覆盖本地文件git pull?
% J8 }2 {* Q! m场景如下:* c# Q1 E8 p8 \/ @+ Z  l+ ~, U) b
一名团队成员正在修改我们正在开发的网站的模板
5 s- V" b- L5 L7 T! I2 q% F1 B他们正在向图像目录添加一些图像(但忘记在源代码控制下添加)
: }9 O8 O1 ~! L他们通过邮件向我发送图像2 m( R, R! |: e! g* e
我在源代码控制下添加图像,并将其与其他更改一起推送到 GitHub/ H2 b7 n  Z) h
他们不能去 GitHub因为 Git 不想覆盖他们的文件。
这是我得到的错误:
9 K" D' K" L8 y/ _6 U6 \7 p3 N, L错误:未跟踪的工作树文件public/images/icon.gif合并覆盖
+ b% z' g8 K; d! n  i
如何强制 Git 覆盖他们?这个人是设计师  - 通常,我会手动解决所有的冲突,所以服务器有最新版本,他们只需要在电脑上更新。
0 Z* {) p6 V! ~6 _7 K" w                                                                8 `; ?1 u$ l6 s7 s
    解决方案:                                                               
- C, x1 _; f1 ^8 _, c; E                                                                ? 重要提示:如果您有任何本地更改,它们将丢失。无论是否有--hard任何未推送的本地提交都将丢失。假如你有什么Git未跟踪文件(如上传的用户内容)不会受到影响。
/ S  q8 K) x6 B  L首先,操作 fetch 将所有origin/
4 V4 |2 l+ e0 T+ D( vrefs最新更新:0 h; J+ X' I; o. E2 E9 |
git fetch --all备份您当前的分支:
, B4 k# f4 w8 p& ~& U. Sgit branch backup-master然后,你有两个选择:# U* B& F. Z4 h( U
git reset --hard origin/master或者如果你在其他分支机构:
6 d6 E0 t6 i9 Ngit reset --hard origin/
$ [: S/ R: ~2 @1 G' E3 p2 k解释:git fetch 从远程下载最新版本,而无需尝试合并或重新设置任何内容。- u9 x4 D6 l7 {) k4 y) R: j
然后将git reset主分支重置为您刚刚获得的内容。--hard选项更改工作树中的所有文件以匹配origin/master$ s: E) V- N: @
维护当前本地提交:值得注意的是,可以通过master在重置前创建一个分支来维护当前的本地提交:  C: g+ m( S4 o/ f3 Y) M! v
git checkout mastergit branch new-branch-to-save-current-commitsgit fetch --allgit reset --hard origin/master在此之后,所有旧的提交都将保存在new-branch-to-save-current-commits.$ W) ]. n+ X5 e; r; @
未提交的变更但未提交的变更(即使是暂存的)也会丢失。确保存储并提交您需要的任何内容。因此,您可以操作以下命令:
; p1 c' K/ h  i: p) y+ b5 X7 I0 bgit stash然后重新应用这些未提交的变更:
! x% P& [# E6 J2 R1 x' ^git stash pop
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则