如何强制覆盖本地文件git pull?
方案如下:
这是我得到的错误:
错误:未经跟踪的工作树文件'public/images/icon.gif'将被合并覆盖
如何强制Git覆盖它们?这个人是设计师 - 通常我会手动解决所有冲突,因此服务器具有他们只需要在他们的计算机上更新的最新版本.
我是git的新手,并试图围绕分支的工作方式.根据文档git checkout
更新工作树中的文件以匹配索引或指定树中的版本.如果>没有给出路径,git checkout也会更新HEAD以将指定的分支设置为>当前分支.
所以据我所知,我工作的目录中的文件(我执行git init的文件)应该根据我所在的分支进行更改.我很困惑,因为当我在分支之间切换时不会发生这种情况.在切换分支之前我正在编辑的编辑存在于我切换到的分支中.我做错了什么或git checkout不能这样工作,我只是误解了文档?
我知道一般的建议是在git中切换分支之前要有一个干净的状态.(藏匿或公园承诺).我想知道我何时会得到"你有本地更改无法切换分支",我无法遵循逻辑:
我有一个repo,文件名为version.txt,包含文本"1":
git checkout -b new
echo 2 >> version.txt(工作目录不脏,修改文件)
git checkout master(这是怎么回事?我没有阶段\提交我对新的更改)
如果我删除新分支中的文件内容,或者首先暂存文件,也会发生同样的情况.
有人可以帮我理解我什么时候会得到"你有本地更改不能切换分支".?
谢谢,冉
我经常尝试签出一个新的远程分支(以从中创建一个本地分支,但这可能与我的问题无关)并且 git 失败并出现以下错误
错误:您对以下文件的本地更改将被检出覆盖:
请在切换分支之前提交您的更改或隐藏它们。
现在,当我看到这一点时,人们可能会天真地期望如果一个人隐藏更改,签出新分支,然后应用隐藏的更改,那么就会发生冲突,但几乎从来没有这种情况。发生的情况是,隐藏的更改应用得很干净,而且我在检出新分支之前不会丢失任何东西。为什么 git 会给出这个看似误导性的错误?如果我可以在结账之前将其藏起来并在最后干净地应用藏匿处,为什么不在git checkout引擎盖下这样做呢?
编辑:
为了更清楚,我不是在问为什么结帐失败,或者为什么有时使用脏工作区的结帐会成功,我理解这一切。我的问题是,在这种情况下,有一个 100% 无数据丢失的行动方案(或者是否存在一些我看不到数据可能丢失的极端情况??)那么为什么 git 不这样做?
如果我对 git 的新手说文件foo第 100 行上的一个 modif会与文件foo第 2 行上的另一个 modif 冲突,那么对他们来说,接受它是事实,而不是抱怨,并且很容易解决冲突。但是因为 git 是一个不错的工具,所以它做的很聪明,甚至不会用它可以解决的非问题来打扰您,而没有任何损坏的风险。为什么在这种情况下与git checkout?
我的情况:我克隆了一个存储库(内核的源文件)。然后检查一个分支,并构建内核。二进制文件已存储在工作树的子目录中。现在,我想放弃所有本地更改,包括构建的二进制文件,并恢复到克隆存储库的不同分支。
特别是,我认为这个答案很有用。在我看来,最好的方法是
git checkout -f <desired branch of the original cloned repository>
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这应该强制结帐,丢弃本地更改(如果我错了,请纠正我)。Git 已成功签出,但我仍然在工作树的同一子文件夹中找到之前构建的二进制文件。
我有一个跟踪文件(一个旧版本的文件),我在master分支上修改.master分支上的staus将此文件显示为已修改,但主题分支上的状态也将此文件显示为已修改.
之前出现了错误"错误:您对"X"进行了本地更改;当我结帐到其他分支而没有进行存储或在git-checkout中不使用"-f"时,无法切换分支.
我已经检查了"stackoverflow.com/questions/1304626/git-switch-branch-and-ignore-any-changes-without-committing",但该错误没有发生,即使我有本地更改也可以结帐.
是否有任何类型的配置导致这种混乱?
git ×6
git-checkout ×3
git-branch ×2
branch ×1
git-fetch ×1
git-pull ×1
git-stash ×1
git-status ×1
overwrite ×1