我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。

错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖


当前回答

警告: 任何未承诺的本地文件更改将会丢失。 任何本地文件若未使用 Git 进行追踪, 将不会受到影响 。 @ info: whatsthis


首先, 更新所有来源/ & lt; branch> refs 到最近的 :

git fetch --all

备份当前分支( 如母版) :

git branch backup-master

跳转到来源/ 管理员的最新承诺, 并检查这些文件 :

git reset --hard origin/master

解释:

git 从远程获取最新下载, 但不试图合并或重标任何内容 。

git 重置主控分支重置为您刚获取的文件。 -- hard 选项更改您工作树中的所有文件, 以匹配源/ 主机中的文件 。


维持当前当地承付额

[*]:值得指出的是,通过在重塑之前从主人那里设立一个分支,可以保持目前的当地承诺:

git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master

在此之后,所有旧承诺都将保留在新的部门到储蓄的当前承诺中。

未承诺的更改

将丢失未承诺的更改, 但是( 即使是阶段的) 。 请确保隐藏并承诺您需要的一切 。 因为您可以运行以下操作 :

git stash

然后重新应用这些未承诺的修改:

git stash pop

其他回答

首先,试一下标准方法:

git reset HEAD --hard # To remove all not committed changes!
git clean -fd         # To remove all untracked (non-git) files and folders!

警告: 上面的命令只有在您没有执行时才会导致数据/ 文件丢失 ! 如果您不确定, 请先从整个仓库文件夹中获取备份 。

然后再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次,再拉一次

如果上面没有帮助,而你不在乎你的未追踪文件/目录(在万一情况下先备份),请尝试以下简单步骤:

cd your_git_repo  # where 'your_git_repo' is your git repository folder
rm -rfv *         # WARNING: only run inside your git repository!
git pull          # pull the sources again

这将删除所有 git 文件( 免罪 . git/ dir , 在那里您全部负责) , 并再次拉动它 。


为什么Git 重置头 - 硬有时会失败?

. givatitribitte 中有 eol=lf 规则的. givatitribittes 文件中的自定义规则 。 givatitrifittes 文件中的 eol=lf 规则 。 givatripittes 中 . givatripittes 中 eol=lf 规则 . givatripittes 中 可能会通过将 折叠线条转换为 if in some text file filef. 如果是这样的话, 您必须执行这些kilf/lf 规则( 在 git status 状态中查看这些规则) , 或者尝试 : git config ore.autcilf 错误来暂时忽略它们 。 当您使用不支持许可属性的文件系统时, 文件系统无法兼容 。 例如, 您有两个仓库, 一个在 Linux/ mac (ext3/hf) 上 (ext3/hf) 。

这将删除所有未承诺的更改, 然后拉动 :

git reset --hard HEAD
git pull

我读过所有答案,但我在找一个命令来做这个。 这就是我所做的。在.gitconfig 中添加了一个 Git 化名。

[alias]
      fp = "!f(){ git fetch ${1} ${2} && git reset --hard ${1}/${2};};f"

您的命令以

git fp origin master

等于

git fetch origin master
git reset --hard origin/master

一旦您进行了 Git 拖动, 您就会得到不匹配的文件列表。 如果文件数量不大, 那么您就可以检查这些文件, 此动作将会覆盖这些文件 。

git 检出 - & lt; filename & gt;

i 通常会这样做,如果为了快速检查我修改服务器上的本地文件(没有推荐的和在您得到这个问题:d背后的大致原因), i 在找到解决方案后检查已修改的文件。

奖金 :

说到先前的回答中的拉/拉/拉/加,我想分享一个有趣的和有成果的把戏,

git Pull -- rebase

以上命令是我生命中最有用的命令 节省了很多时间

在将您新承诺推进到服务器之前, 请尝试此命令, 它会自动同步最新的服务器更改( 加上一个抓取+合并) , 并将您的承诺放在 git 日志的顶部 。 无需担心手动拉动/ 合并 。

查找“ 直接拉动 - rebase ” 的操作细节 ? @ info: whatsthis