回答

收藏

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

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

如何强制覆盖本地文件git pull?# ~" `8 m) S2 {* ^7 l1 I  c
场景如下:6 q. I5 i: F. {  O9 z8 F
一名团队成员正在修改我们正在开发的网站的模板
0 x7 @: c6 K7 l# i% Z. c8 A  E" Z' Q他们正在向图像目录添加一些图像(但忘记在源代码控制下添加)0 v+ Q5 ]" z% d8 k2 l2 a
他们通过邮件向我发送图像8 J9 K- ^7 n/ o2 H0 {. o1 {
我在源代码控制下添加图像,并将其与其他更改一起推送到 GitHub' G$ y- n7 ^5 L7 s3 }
他们不能去 GitHub因为 Git 不想覆盖他们的文件。
这是我得到的错误:
. T7 P/ Z8 m2 K( R错误:未跟踪的工作树文件public/images/icon.gif合并覆盖
) {1 [! r, ~7 F9 m7 I( {
如何强制 Git 覆盖他们?这个人是设计师  - 通常,我会手动解决所有的冲突,所以服务器有最新版本,他们只需要在电脑上更新。, J! x$ f; D# @) d% R! m
                                                                . n# v9 h- ~! h7 I) N
    解决方案:                                                               
! f5 f3 ^7 h- h                                                                ? 重要提示:如果您有任何本地更改,它们将丢失。无论是否有--hard任何未推送的本地提交都将丢失。假如你有什么Git未跟踪文件(如上传的用户内容)不会受到影响。
9 Q% A- D& @4 v# D, R4 T  k首先,操作 fetch 将所有origin/
8 M) K3 i9 _5 E$ i4 W/ [  d& G, u* Srefs最新更新:" S2 {. h" }& N/ x" i
git fetch --all备份您当前的分支:- ~! b4 _% P2 o- i: G+ g& u6 |
git branch backup-master然后,你有两个选择:
- T. N) q2 U8 x6 e! hgit reset --hard origin/master或者如果你在其他分支机构:* M. a/ L) R7 e- z; m3 k
git reset --hard origin/7 }. M  B' g. n# q8 j2 c
解释:git fetch 从远程下载最新版本,而无需尝试合并或重新设置任何内容。
! S- Z* E. u) d9 c& C2 W- d然后将git reset主分支重置为您刚刚获得的内容。--hard选项更改工作树中的所有文件以匹配origin/master
$ g0 E: i# A+ V+ o; Y/ z& V' K维护当前本地提交:值得注意的是,可以通过master在重置前创建一个分支来维护当前的本地提交:5 A9 n  t" j) H$ w' D
git checkout mastergit branch new-branch-to-save-current-commitsgit fetch --allgit reset --hard origin/master在此之后,所有旧的提交都将保存在new-branch-to-save-current-commits.
5 N) ?& Y$ ^8 o2 ^# C1 L2 R6 V未提交的变更但未提交的变更(即使是暂存的)也会丢失。确保存储并提交您需要的任何内容。因此,您可以操作以下命令:# T' e* f# P& X5 s& M
git stash然后重新应用这些未提交的变更:
" s4 V/ F! _) i# V% Sgit stash pop
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则