Git Pull Force 覆盖本地文件

2024-04-01

"Git 拉力", "git 将分支重置到原点“或者换句话说,拉取远程分支以覆盖本地分支,似乎是一个被广泛搜索的功能,尽管本地搜索量很少下降,但人们的兴趣却越来越大。

对于不断壮大的团队和不断增加的开发人员数量来说,这绝对有意义。

目前,最短的工作解决方案非常冗长并且需要分支知识

git reset --hard origin/<branch_name>

编辑:有一个更方便的变体git reset --hard @{u}.
请给予应有的信用comment https://stackoverflow.com/questions/72194920/git-pull-force-to-overwrite-local-files#comment127555815_72194920。更多快捷方式here https://mirrors.edge.kernel.org/pub/software/scm/git/docs/gitrevisions.html.

不幸的是,因为输入以下内容要快得多

git pull

然而,这也带来了其自身的挑战。历史分歧、合并冲突等等……


我们确实有这样的简写

git push origin HEAD -u --force

推动本地分支<branch_name>到原点,覆盖同名的远程分支<branch_name>并将其设置为自己的上游分支。

然而,并没有这样的--force/reset替代git pull.


添加此功能的最佳方式是什么git?


660 万次浏览
将本地存储库分支重置为就像远程存储库 HEAD 一样 https://stackoverflow.com/questions/1628088/reset-local-repository-branch-to-be-just-like-remote-repository-head470 万次观看
如何强制 git pull 在每次拉取时覆盖所有内容? https://stackoverflow.com/questions/9589814/how-do-i-force-git-pull-to-overwrite-everything-on-every-pull37 万次观看
从 Git 远程拉取时使用远程更改解决冲突 https://stackoverflow.com/questions/4785107/resolve-conflicts-using-remote-changes-when-pulling-from-git-remote24 万次观看
git pull 时如何强制更新? https://stackoverflow.com/questions/4550937/how-to-force-update-when-doing-git-pull9 万次观看
强制 GIT Pull 而不提交 https://stackoverflow.com/questions/8317857/force-git-pull-without-commiting
使用 git 强制拉取 https://stackoverflow.com/questions/23153444/force-a-pull-with-git
git 强制拉取隐式变基 https://stackoverflow.com/questions/65163377/git-force-pull-with-implicit-rebase
清理一个fork并从上游重新启动它 https://stackoverflow.com/questions/9646167/clean-up-a-fork-and-restart-it-from-the-upstream/9646323#9646323
强制 git 在拉取时更新我的​​本地存储库 https://stackoverflow.com/questions/32644710/force-git-to-update-my-local-repo-when-pulling


我想强调的是,虽然您确实提到了每天都会出现的需求,git强制命令删除你的工作没有警告也是问题的根源,会带来更严重的后果(查找“我在之后失去了工作”)git reset --hard / git checkout .,我可以拿回来吗?”问题)。

和你的pull -f例如,当您与遥控器交互时,这一事实会放大这一点,你不知道你会得到什么从遥控器。

根据我的卑微经验,我强烈建议养成不使用的习惯git pull并且只使用git fetch.

然后检查差异origin/branchname,然后选择是否要重置或变基或...


最好有一个命令一次性说“移至该提交并放弃所有更改”,我将在这里重复我在评论中建议的内容@VonC 的回答 https://stackoverflow.com/a/72195298/86072 :

#!/bin/bash

target=$1
if [ -z "$target" ]; then
    target=HEAD
fi

set -e  # avoid going forward if one command fails ...

git stash
git restore -SW -s "$target" -- .
git reset "$target"

(我没有一个好的别名:git goto ?)

它将提供一个相当安全的替代方案git reset;主要警告是:磁盘上的文件,不在起始提交中跟踪,但在$target将被覆盖而不保存。

你需要一个更复杂的变体git stash也保存这些文件。


[更新]我想我找到了一个脚本,可以设法隐藏受影响的文件(并且仅隐藏这些文件):

#!/bin/bash

target=$1
if [ -z "$target" ]; then
    target=HEAD
fi

set -e  # avoid going forward if one command fails ...

list_impacted_files () {
   local target=$1

   # tracked files in the working tree that have a diff
   git diff --no-renames --name-only HEAD

   # untracked files that will be clobbered when restoring $target :
   #   * files that are present in $target but not in HEAD
   #   * and that currently exist on disk (use 'ls' to keep only those)
   # add '|| true' to ignore error code returned by 'ls' on non existing files
   git diff --no-renames --name-only --diff-filter=A HEAD "$target" |\
     xargs -r ls 2> /dev/null || true 
}

# list files as described above, and feed this list to `git stash -u`
# 'xargs -r <cmd>' avoids running <cmd> at all if stdin is empty
# in our case: don't run 'git stash -u' if no files are to be stashed ...
list_impacted_files "$target" | xargs -r git stash -u --

git restore -SW -s "$target" -- .
git reset "$target"

要将您的存储库恢复到原来的状态:

  • 恢复到初始提交(使用git reset或上面的脚本...)
  • 发现stash@{xx}你想恢复在git stash list
  • run git stash apply --index stash@{xx}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git Pull Force 覆盖本地文件 的相关文章

  • git diff 在尖括号中显示 unicode 符号

    我有一个带有 unicode 符号 俄语文本 的文件 当我修复一些拼写错误时 我使用git diff color words 看看我所做的改变 如果是 unicode 西里尔文 符号 尖括号会造成一些混乱 如下所示 cat p1 cat p
  • 推送时发生 Git 错误 - update_ref 失败

    当我尝试推送本地提交时遇到问题 这可能是在 Android Studio 崩溃时发生的 这是错误 update ref 引用 refs remotes origin master 失败 无法锁定 ref refs remotes origi
  • 分支明显不同,但提交历史是相同的

    git status告诉我我的分支和我在另一个存储库上开始的分支已经分歧 On branch master Your branch and origin master have diverged and have 13 and 13 dif
  • git - 更新 fork 的 master 并将我的分支重新建立到它之上?

    我分叉了一个 github 项目 然后将其克隆到本地 然后我在新分支中做了一些更改my github the project repo 然后我添加并提交了更改 并推送到我的 github 存储库并提交了拉取请求 所有者已收到我的请求 并希望
  • git pull,忽略深度,如何不拉取整个历史记录?

    我们有一个巨大的多 GB git 存储库 主要是二进制对象 克隆需要几天时间 实际的主分支 没有历史记录 只有大约 20MB 所以我想 深度为 1 的 git 克隆就是解决办法 然而 现在我需要将某人的更新拉到主服务器 我们没有分支 当我拉
  • Git:发送电子邮件而不提交

    我有一个项目 我做了更改 并想使用 git send email 功能将它们发送给另一个用户 我发现它可以通过发送补丁来工作 由git format patch每次提交 是否可以只发送diff的 我不想先提交 然后发送补丁 是否有gitfo
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • 如何合并两个连续的 git 存储库

    我有一个相当独特的情况 我有一个名为 Project1 的存储库 我在其中工作了一些时间 几个月 一年后 我创建了存储库 Project1 Again 从 Project1 停止的地方开始 现在 我希望修订历史记录是连续的 因此我希望它们合
  • .gitconfig 别名函数调用

    我在 gitconfig 中定义了以下别名 alias teamcity tc tc是我在我的中定义的一个shell函数 bashrc文件 由于某种原因 我收到以下错误 aafghani 03 git workday amirafghani
  • Git 将一个分支合并到所有其他分支中

    我知道这个问题已经在这里被问过 https stackoverflow com questions 2329716 merging changes from master into all branches using git https
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • 将bitbucket发布到数字海洋

    我本质上是试图使用 bitbucket 来理解 git 的概念 我一直在通过修改本地帐户和 bitbucket 帐户之间的文件来练习版本控制 事实证明这很有帮助 现在我正在尝试弄清楚如何将文件从 bitbucket 或者我猜是 GitHub
  • 带有 git Remote 的 Gem 文件在 Heroku 推送上失败

    我的 gemfile 中有以下行 gem client side validations git gt email protected cdn cgi l email protection Dakuan client side valida
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • Git - 如何将整个目录恢复到特定提交(删除任何添加的文件)

    我想恢复 git 中的目录 恢复其中的所有文件 并删除自该提交以来添加的所有文件 进行结账似乎只能满足我的第一个要求 但不会删除任何文件 我想出了最简单的解决方案 git rm path to dir git checkout
  • `git push` -- 没有输出,什么也没有发生

    touch test git add test git commit m test git push u origin master 这奏效了 该文件已上传到存储库 rm test cp R website website git rm t
  • Git 的企业采用率?

    最近一些同事之间进行了一场讨论 在当今的软件行业中 如何存在两个不同的世界 面向自由软件 公司的 Question Git 在企业环境中的使用情况如何 您在企业环境中使用 Git 的体验如何 无论如何 我们在工作场所使用 git 每个人都对
  • git merge 冲突的不同场景

    我试图了解 git 合并后可能发生 git 冲突的情况以及如何避免它们 我创建了一个 git 存储库并向其中添加了一个文本文件 我已将 1 添加到文本文件中并将其提交给 master 我已经从 master 创建了一个新分支 分支 2 并将

随机推荐

  • 防止 python 覆盖范围包含虚拟环境站点包

    我是报道新手 遇到了一个奇怪的问题 我的报道考虑了我的虚拟环境站点包 这是覆盖率运行的输出 coverage run test py Ran 20 tests in 0 060s OK atcatalog jmfrank63 fullsta
  • 无法在 vs2008 中打开 NerdDinner 项目

    NerdDinner csproj 不会在带有 net 3 5 sp1 的 vs2008 sp1 中加载 我是不是对这些工具或其他东西不了解最新的情况 它抱怨此安装不支持此项目类型 您是否安装了 ASP NET MVC 框架 如果没有 你需
  • 将数据帧系列中的分数转换为浮点数

    在 Python 3 x 中 如何将包含分数字符串和 NaN 值的 Dataframe 列转换为浮点数 我尝试了一些方法 但没有找到合适的解决方案 所以如果我有一个数据框 df 它看起来像 a b 0 John 20 1 1 Bob NaN
  • 如何在 R 中获取整数哈希码?

    我想做的是在 R 中实现一个哈希技巧 代码如下 library digest a lt digest key a algo xxhash32 1 4da5b0f8 这返回了字符类型的哈希码 有什么办法可以把它变成整数吗 或者还有其他包可以实
  • 使用 Passport-facebook 从 Facebook 检索照片

    我可以通过 Passport facebook 检索基本用户信息 遵循以下代码并保存在 mongodb 中 app get auth facebook passport authenticate facebook scope email p
  • 从kafka主题中删除单个记录

    有没有办法从kafka主题中删除单个记录 我知道有一个脚本 kafka delete records sh 可以删除指定主题和分区上指定偏移量之前的记录 但我希望能够删除我指定的偏移量上的记录 有没有办法做到这一点 这不是在 Java 上
  • Python 输出格式

    你好 我搜索过输出格式 但格式没有成功 我找不到合适的文档 我真的想了解这段代码是如何工作的 如果有人可以启发我吗 print Survived i 1f len survived float len survived len train
  • 您是否必须 pickle 缩放器和 ML 模型才能部署?

    当使用 sklearn 训练 ML 模型时 我通常使用 sklearn 内置的 StandardScaler 首先将缩放器拟合到训练数据 然后转换训练数据 最后使用相同的 StandardScaler 对象来转换测试数据通过训练数据集中之前
  • \bin 中插入不需要的 SQLite

    我正在使用 Visual Studio 2010 并使用 Web 部署将 Net MVC 站点提升到特定环境 我安装了 Elmah 它在我的 DEV 环境中运行得很好 但是当我推送 TEST 时 我遇到了异常 因为 SQLite 不是一种好
  • Django - 使用子对象过滤查询集(ForeignKey)

    我有 3 个模型 其中 2 个对应第一个模型 class Parent models Model name models CharField class Child1 models Model parent models ForeignKe
  • C 语言中的“{0}”是什么?

    什么是char buf MAXDATASIZE 0 s 0 means 试图打印它 但它什么也没打印 include
  • 检查用户是否使用兼容模式的 IE

    我正在寻找一些代码 PHP 或 JavaScript 可以很好地检查查看页面的用户是否使用兼容模式 然后我可以使用该代码执行一些条件语句 或者基本上给他们一个通知以将其关闭 强迫他们 这将禁用兼容性视图 除非用户随后通过进入开发人员工具并进
  • Spring Security:多个ThreadLocals中有相同的SecurityContext实例,它是如何工作的?

    我有一些关于 Spring Security 3 0 5 和 SecurityContext 的问题 首先 我尝试总结一下我所知道的 SecurityContextHolder 存储 SecurityContext 在Request之间 S
  • 多个 socket.io 服务器共享单个 HTTP/S 服务器

    使用 ws Node js WebSocket 库 可以有多个服务器共享单个 HTTP S 服务器 https github com websockets ws multiple servers sharing a single https
  • iPhone Web 应用程序 - 接听电话时会话和当前 URL 丢失

    我有一个多页面网站 旨在作为 iPhone 上的网络应用程序运行 它具有通常的
  • 如何将 PIL.ImageTk.PhotoImage 保存为 jpg

    我想将 PIL ImageTk PhotoImage 保存到文件中 我的方法是创建一个 打开 文件并调用 写入 方法 但它不起作用 因为我不知道如何从对象获取字节数组 def store temp image data image new
  • 多部分/替代子类型,客户端何时使用它?

    为什么网络邮件 如 Gmail 使用以下方式发送 MIME 消息多部分 替代子类型 当用 HTML 编写时 而其他人将 HTML 作为 MIME 发送 其中包含文本 html 部分 不使用替代子类型 The 第5 1 4节 https ww
  • 复杂类型作为数组索引

    array 对象 obj other obj PHP 数组仅适用于标量数据类型 如 int string float boolean null 的索引 我不能像其他语言一样使用对象作为数组索引吗 那么如何实现对象 gt 对象映射呢 虽然我在
  • 在 Rust 中将递归函数转换为迭代器的技术?

    我正在努力将一个简单的递归函数变成一个简单的迭代器 问题在于递归函数在其局部变量和调用堆栈中维护状态 将其转换为 Rust 迭代器意味着基本上将所有函数状态外部化为某些自定义迭代器结构上的可变属性 这是一个相当混乱的尝试 在 javascr
  • Git Pull Force 覆盖本地文件

    Git 拉力 git 将分支重置到原点 或者换句话说 拉取远程分支以覆盖本地分支 似乎是一个被广泛搜索的功能 尽管本地搜索量很少下降 但人们的兴趣却越来越大 对于不断壮大的团队和不断增加的开发人员数量来说 这绝对有意义 目前 最短的工作解决