我如何强制将本地文件覆盖在git pull
我的本地仓库包含一个文件名文件名与服务器上的文件名相同。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制将本地文件覆盖在git pull
我的本地仓库包含一个文件名文件名与服务器上的文件名相同。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
这将删除所有未承诺的更改, 然后拉动 :
git reset --hard HEAD
git pull
其他回答
似乎大多数答案都集中在master
然而, 分支中, 有几次我在两个不同的地方 研究同一个功能分支, 我希望在一个分支中重设一个, 在另一个分支中反映出来, 而不是跳过很多圈子。
依据综合RNA 的答复和Torrek对类似问题的答复我已经想出了一个非常成功的计划:
git fetch
git reset --hard @{u}
从一个分支运行它 它只会重新设置你的地方分支 到上游版本。
这可以恰当地用在别名中(git alits) (Git) 。git forcepull
)以及:
git config alias.forcepull "!git fetch ; git reset --hard @{u}"
或者,在你的.gitconfig
文件 :
[alias]
forcepull = "!git fetch ; git reset --hard @{u}"
尽情享受吧!
警告:
对已跟踪文件的本地更改将丢失 。 @ info: whatsthis
任何本地文件否吉特追踪到的不会受到影响。
第一,更新所有origin/<branch>
最晚的 refs :
git fetch --all # if this doesn't work try `git pull -f` (see comments)
备份当前分支( 例如 )master
):
git branch backup-master
跳转到最新承诺origin/master
并检出这些文件 :
git reset --hard origin/master
git fetch
从远程下载最新数据,不试图合并或重标任何内容。
git reset
将主分支重置为您刚获取的 。--hard
选项选项 更改工作树中的全部文件以匹配文件origin/master
.
[*]值得指出的是,通过从master
在重设前:
git checkout master
git branch new-branch-to-save-current-commits
git fetch --all # if this doesn't work try `git pull -f` (see comments)
git reset --hard origin/master
在那之后,一切旧事,将永居其中;new-branch-to-save-current-commits
.
将丢失未承诺的更改( 即使是第 阶段的更改) 。 请确保隐藏并承诺您需要的一切 。 为此您可以运行以下操作 :
git stash
然后重新应用这些未承诺的修改:
git stash pop
我认为,冲突有两种可能的原因,必须分别加以解决,而且据我所知,上述答案中没有一个涉及这两个问题:
未跟踪的本地文件需要删除, 手动( 安全) 或按其他答案中的建议, 由git clean -f -d
离子分支以外的当地承诺也需要删除。git reset --hard origin/master
(取代“校长”的分支)git fetch origin
(一)(一)
重置索引和头部origin/master
,但不要重置工作树:
git reset origin/master
谈到前几个答复中的拉/拉/拉/加,我想分享一个有趣的和有成果的把戏,
git pull --rebase
以上命令是我Git生命中最有用的命令 拯救了很多时间
在将您新承诺推进到服务器之前, 请尝试此命令, 它会自动同步最新的服务器更改( 加上一个抓取+合并) , 并将您的承诺放在 Git 日志的顶部 。 无需担心手动拉动/ 合并 。
查找详细信息"Git pull -rebase"是做什么的?.