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 的相关文章

  • Git - 如何将整个目录恢复到特定提交(删除任何添加的文件)

    我想恢复 git 中的目录 恢复其中的所有文件 并删除自该提交以来添加的所有文件 进行结账似乎只能满足我的第一个要求 但不会删除任何文件 我想出了最简单的解决方案 git rm path to dir git checkout
  • 使当前提交成为 Git 存储库中唯一(初始)提交?

    我目前有一个本地 Git 存储库 我将其推送到 Github 存储库 本地存储库有约 10 次提交 Github 存储库是其同步副本 我想要做的是从本地 Git 存储库中删除所有版本历史记录 以便存储库的当前内容显示为唯一提交 因此存储库中
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • git 是否有任何静态接口?

    我一直在寻找一个宁静的 git api 但似乎没有找到 我得到的最接近的是 Github 的 api 来访问一些存储库信息 还有其他的实施吗 Orion Git API http wiki eclipse org Orion Server
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 从 C# 中的子上下文菜单项访问时,源代码控制为空

    当他们从上下文菜单条中单击子菜单项 颜色 gt 红色 时 我试图更改按钮的颜色 该代码附加到用户定义的按钮数量 为了弄清楚他们试图更改哪个按钮 我尝试从子项目转到源代码管理 如下所示 发送者 gt 所有者工具条 gt 所有者菜单 gt 源代
  • 是否可以检测 http git 远程是智能还是愚蠢?

    我正在我的应用程序中实现一个选项来使用 depth 1制作 git repo 的最小功能克隆 我刚刚意识到愚蠢的 http 传输不支持 depth 我想自动检测 http 远程是愚蠢的还是聪明的 这样我就可以省略 depth与哑 http
  • GIT:提交时“致命:无法写入 new_index 文件”

    当我尝试将更改提交到本地存储库时 我收到以下消息 致命 无法写入 new index 文件 As this 线程说明 http luhman org blog 2010 04 05 git fatal unable write newind
  • 如何创建名称中带有正斜杠的标签

    当我已经有了类似的标签时 有什么方法可以创建名称中带有正斜杠的 git 标签吗 假设我有 1 16 0 标签 并且我想创建 1 16 0 1 0 0 标签 git tag 1 16 0 1 0 0 error refs tags 1 16
  • 哪些 git hooks 适用于“git rebase --continue”?

    我正在尝试为我的组织构建一组 git hook 脚本 我想使用的一个脚本 仅用于我自己的多个项目 将是检查git rebase continue我的代码中没有留下任何冲突标记 lt lt lt lt lt or gt gt gt gt gt
  • Git checkout 不会丢弃我的更改

    我在 Windows XP 上使用 git 1 7 1 和 cygwin 这个问题可以通过例子得到最好的说明 git status On branch master Changed but not updated use git add
  • git-lfs 中的多个文件版本

    我正在尝试估计 GitHub 上我的项目的存储要求 并对 git lfs 如何存储多个版本的文件有一些疑问 git lfs 是否存储多个版本的文件 如果是这样 对文件的每次更改都会导致复制整个文件 还是仅存储差异 所有版本都会计入 gith
  • 在推送后检索孤立的提交对象 --force

    Doing push force总是有点冒险 这里有一个例子 说明它如何产生一些问题 例如远程丢失修订版本 假设 有一个人Bob已更新远程master分支来自B to C 还有另外一个人Mike还没有获取此更新并且HEAD of his m
  • 为什么“git pull”在我的网络服务器上失败?

    我使用 git 来提取站点代码库的更改 文件内部的更改和文件删除是有效的 但是 当我将新文件或目录 不是空的 添加到存储库时 它不会被本地拉到网络服务器 拉动时不会显示错误消息 但在检查该文件时 它不在那里 在线的 bitbucket re
  • git push --force-with-lease 总是安全吗?

    我一直遵循的规则是 一旦 git 历史记录被推送到远程存储库 就不再修改它 但我想知道交互式变基到推送 force with lease 是否绕过了这条规则 如果强制租约成功 对其他用户来说是否完全安全 或者此策略有任何注意事项吗 预先感谢
  • Jmeter 和 Bitbucket 服务器负载测试

    我是 Jmeter 的新手 我有一个本地托管的 Bitbucket 服务器 有时 当 Bamboo plan 触发并发 git 克隆操作时 会发现 Bitbucket 服务器变得缓慢 无响应 我必须重新启动服务 我想通过对另一个本地创建的
  • 仅使用 git 存储未暂存的更改(不是 --keep-index)

    首先 我确实知道 keep index 这不是我想要的 因为它仍然隐藏着all更改 但将暂存的更改保留在工作树中 如果可能的话 我只想存储未暂存的文件 而无需再次添加所有更改git stash patch 如果您想存储索引 已暂存的内容 和
  • BitBucket 应用程序密码:git 命令行访问有哪些权限?

    我了解如何为 BitBucket 创建应用程序密码 如中所述Atlassian 的应用程序密码信息 https support atlassian com bitbucket cloud docs app passwords and 这个答
  • 如何在多个不同的分支上工作,以便我可以在它们之间轻松切换?

    有没有办法在 GIT 中处理同一个文件但不同的功能 分支 我确信有办法 但最简单的方法是什么 我不想隐藏我的更改 因为这很麻烦 借助 SVN 我能够将 2 个独立的分支作为 2 个不同的实体进行工作 无需任何干预 并且可以轻松在两者之间切换
  • 推送更改到 Git 不起作用

    每次我想要提交命令 git push heroku master 时 系统都会要求我在 PowerShell 中输入凭据 当我输入 heroku 凭据 默认情况下连接到 git 时 我收到错误消息 但是 当我输入我的主目录中的 netrc

随机推荐