我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
我如何强制在 git pull 上覆盖本地文件 ? 我的本地仓库包含一个与服务器相同的文件名文件 。
错误: 未跟踪的工作树文件“ example. txt ” 会被合并覆盖
当前回答
1 步( 可选) 从您本地仓库根部中选择, 保存备份, 并清空当前文件夹 :
mkdir -p ../<branch>-bkp && mv --backup=t * ../<branch>-bkp
2. 从远程仓库下载分支的所有文件和文件夹:
git checkout <branch> && git add -A . && git reset --hard origin/<branch> && git pull
将 & lt;branch> 替换为您想要覆盖的分支名称 。
评论:
您可能宁愿手动备份并删除当前文件和文件夹, 而不是第 1 步, 事实上, 我建议您在操作系统 gui 中用一个文件手处理器这样做。 如果您跳过第 1 步, 请注意 : 您将失去本地仓库中的所有工作 ! 重要 : 如果您退出 Git pull 在第 2 步中拖动, 您可能无法从远程仓库获取最新版本 。 根据下面的第二个引用, git 重置 -- hard 将会重置中转区域, 工作目录会匹配
参考文献:https://gitforwindows.org/https://www.atlassian.com/git/tutitors/undoing-changes/git-reset https://www.atlassian.com/git/tutitors/rewriting-history/git-reflog
其他回答
1 步( 可选) 从您本地仓库根部中选择, 保存备份, 并清空当前文件夹 :
mkdir -p ../<branch>-bkp && mv --backup=t * ../<branch>-bkp
2. 从远程仓库下载分支的所有文件和文件夹:
git checkout <branch> && git add -A . && git reset --hard origin/<branch> && git pull
将 & lt;branch> 替换为您想要覆盖的分支名称 。
评论:
您可能宁愿手动备份并删除当前文件和文件夹, 而不是第 1 步, 事实上, 我建议您在操作系统 gui 中用一个文件手处理器这样做。 如果您跳过第 1 步, 请注意 : 您将失去本地仓库中的所有工作 ! 重要 : 如果您退出 Git pull 在第 2 步中拖动, 您可能无法从远程仓库获取最新版本 。 根据下面的第二个引用, git 重置 -- hard 将会重置中转区域, 工作目录会匹配
参考文献:https://gitforwindows.org/https://www.atlassian.com/git/tutitors/undoing-changes/git-reset https://www.atlassian.com/git/tutitors/rewriting-history/git-reflog
警告: git clean 删除所有未跟踪的文件/目录, 无法撤销 。
有时只是干净 - f 帮不上忙。 如果您有未跟踪的目录, - d 选项也需要 :
# WARNING: this can't be undone!
git reset --hard HEAD
git clean -f -d
git pull
警告: git clean 删除所有未跟踪的文件/目录, 无法撤销 。
先考虑使用 -n (-- dry-run) 的标记。 这将显示要删除的内容, 但不实际删除任何内容 :
git clean -n -f -d
示例输出 :
Would remove untracked-file-1.txt
Would remove untracked-file-2.txt
Would remove untracked/folder
...
看起来最好的办法是首先做到:
git clean
以删除所有未跟踪的文件,然后继续使用通常的 Git 调用...
这是恢复变化的最佳做法:
git 承诺执行您的分阶段更改, 以便将其保存在 reflog( 见下文) git 获取最新的上游更改 git 重设 -- 硬源/ master 硬重置到源主分支
reflog 记录本地仓库中更新的分支和其他引用。 或简单地放入 - reflog 是您更改的历史 。
所以这总是一个伟大的实践 承诺。 承诺被附在折叠纸上, 保证你永远有办法 检索删除的代码 。
一种比较容易的方式是:
git checkout --theirs /path/to/file.extension
git pull origin master
这将在 Git 上的文件上覆盖本地文件