Git 与 master 合并,无需签出 master

2024-05-05

每次我需要的时候merge develop with master I do:

git checkout master

git merge develop

有时我忘记切换出去master。因此,我在运行时错误地更改了代码master。它可能会很混乱。我已承诺master误了几次。

有没有办法merge to master无需先切换到master?


如果你想做一个real合并到master,没有。真正的合并至少需要一个工作树来进行工作。它还使用索引,该索引需要匹配操作外部的当前分支(请参阅git worktree add方法如下)。

如果你想做一个快进操作(不是实际的合并),这是可能的。例如:

git push . develop:master

(注意缺少+标志或--force选项)将尝试快进您的master与您的承诺相同develop. Use HEAD表示当前分支:

git push . HEAD:master

这些仅在可以快进的情况下才有效。如果没有,您将收到以下形式的错误:

 ! [rejected]              [name] -> master (non-fast-forward)

它告诉你你需要一个工作树,其分支是master在其中运行git merge.

要做到这一点而不改变你的分支current工作树,使用git worktree add,如果您的 Git 至少为 2.5(最好至少为 2.15)。例如,假设您位于存储库的顶层,在分支上feature/X:

git worktree add ../master   # NB: assumes ../master is available as a directory name
cd ../master
git merge feature/X
...                 # do what it takes to complete the merge here

cd -                # return to your main repository
rm -rf ../master    # remove added worktree
git worktree prune  # clean up list of added worktrees

添加的工作树有自己的索引(以及它自己的HEAD) so git merge现在有一个索引和工作树可以在其中完成其工作,或者将其混乱留给您来修复,以实际发生的情况为准(请参阅科斯蒂克斯的评论) https://stackoverflow.com/questions/54447800/git-merge-with-master-without-checkout-to-master/54448344?noredirect=1#comment95705408_54447966.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 与 master 合并,无需签出 master 的相关文章

  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • Git:以新名称签出旧版本的目录

    如何以新名称查看目录的先前版本 我一直都有一个目录foo在我的仓库中 我想创建一个目录foo old在我当前的工作树中 其内容是HEAD 2 foo 我同时需要两个版本 以确保它们给出相同的结果 测试这需要相当多的代码 并且需要同时提供两个
  • 使用 TFS REST API 获取 Git 提交的最新关联工作项

    我正在尝试获取关联的工作项使用 TFS REST API 进行 GIT 提交 https www visualstudio com en us docs integrate api git commits 我的请求 URL 如下所示 htt
  • 如何在 SVN 中分支单个文件?

    分支的颠覆概念似乎专注于创建整个存储库的 不稳定 分支 并在其上进行开发 是否有一种机制可以创建单个文件的分支 对于用例 请考虑具有多个特定于平台的源代码 c 实现的通用头文件 h 这种类型的分支是永久性的 所有这些分支都将不断发展 偶尔会
  • Git 中的数据完整性?

    我现在已经多次听到提到 Git 提供数据完整性 但是 这是什么意思 据我所知 git 中的所有对象都是使用 SHA 1 校验和来访问的 并且该校验和是根据文件的内容计算的 这意味着如果文件发生更改 您将得到不同的校验和 但这如何提供数据完整
  • 为什么 git 在每次合并时都运行“git gc --auto”?

    今天 git 开始表现得很有趣 嗯 比平时更有趣 坚持运行git gc每次合并后 即使它们是背靠背的 C Projects my current project gt git pull remote Counting objects 31
  • 在 python 中找不到 git 可执行文件

    我试图使用访问密钥克隆 git 存储库 但是当我尝试运行它时 它抛出一个异常 说找不到 git 可执行文件 但我已经安装了 git 并且 in it py 显示了正确的路径 C Program Files Git bin 我还安装了 git
  • git rebase 吃了我的提交!为我翻译“git reflog”输出?

    我已经完成了五次提交 我想在推送它们之前将它们全部合并为一次提交 出于某种原因 我决定尝试通过与通常使用的不同的方式来做到这一点 FWIW 我试图按照此处的说明进行操作http gitready com advanced 2009 02 1
  • 是否可以使用“git gc”来打包引用日志对象?

    正如答案所暗示的https stackoverflow com a 32025729 https stackoverflow com a 32025729我已经配置了远程裸仓库 git config gc pruneExpire never
  • 如何在 git 中将我的功能分支变基到开发分支,尽可能减少冲突?

    我的功能分支已超过大约 30 次或更多提交 与此同时 在开发分支中 其他开发人员还推出了一些其他功能 因此 每次在开发中发布新功能时 我都会被要求 将开发分支重新建立到我的功能分支上 解决冲突 如有 继续在您的功能分支中开发 问题 第二步就
  • Git 实验分支还是单独的实验存储库?

    我正在开发一个 Android 应用程序 并且在整个开发周期中一直使用 Git 现在 我想构建并发布实验性功能 供人们尝试和安装 同时仍将原始的 稳定的应用程序安装在他们的设备上 现在 这意味着我需要使用不同的包名称 这会更改开发项目中的一
  • 为什么我们应该在 git commit 命令中使用 -m ?

    git commit m my commit 我们使用此命令将提交添加到我的 Github 存储库 这个 m 是什么意思 Do a git commit help m是为了留言 这将出现在您的提交历史记录中 例子 git commit m
  • gitbranch --merged 使用管道命令

    有没有办法达到相当于 git branch merged 使用 git 管道命令 我知道有类似的命令git for each ref它为您提供提交哈希值及其相应的引用名称 是否有一个命令可以判断某个提交是否可以从另一个提交访问 这基本上就是
  • 使用 git 将一系列小的合并从 master 压缩到我的分支中,同时保留对 master 的引用?

    我有一个非常复杂的合并要做 部分问题在于我浪费了太多时间 因此要纳入我的分支的更改量是巨大的 为了让事情变得更容易 我选择这样做git merge origin master 20 then git merge origin master
  • git checkout 后,Git 丢失了本地提交文件

    我从另一个分支切换 这样我就可以进行推送 在进行结账时 文件在我的编辑器中打开 这可能导致权限被拒绝错误 git 丢失了我的所有文件吗 我不知道如何让他们回来 这就是我所做的 丢失的文件有js Messages目录templates Mes
  • “git merge”和“git rebase”有什么区别?

    有什么区别git merge and git rebase 假设最初有 3 次提交 A B C 然后开发人员 Dan 创建了提交D 开发者 Ed 创建了提交E 显然 这一冲突应该以某种方式得到解决 为此 有两种方法 MERGE 两者都提交D
  • 在 git svn fetch 期间解压树对象时发生致命错误

    当运行 get svn fetch 从上游 svn 存储库提取最新的新分支时 我收到此错误 git svn fetch fatal failed to unpack tree object 5ecb324e8b8fcb918acb253f3
  • 在 Jenkins 项目中加载私有存储库子模块

    我目前正试图让詹金斯 克隆项目及其子模块 使用部署密钥配置为 Github 私有存储库验证 Jenkins CI https stackoverflow com questions 5212304 authenticate jenkins
  • Github 操作错误:bash:第 3 行:npm:找不到命令

    我正在尝试通过 ssh 将 Nodejs 应用程序从 github 部署到远程 ubuntu 服务器 这是我的 main yml name Node Github CI on push branches master jobs deploy
  • 如何编辑 git 中任何提交的提交消息? [复制]

    这个问题在这里已经有答案了 假设我有 3 个未推送的提交 现在我想更改第一次或第二次提交的提交消息 更改第三次提交的提交消息很简单 使用git commit amend 怎么做 回到子问题 是否有一个git commit amend对于先前

随机推荐