git - 如何强制 git checkout 和覆盖分支?
问题描述
我想签出分支并删除当前退出的分支。
例如git checkout -b --by-force $branch
,因此分支将基于当前结帐分支;我总是得到 $branch 名称存在。
我不想合并,我只想使用现有名称进行清晰的结帐。
我不想有几个步骤来完成这个动作。aka,我不想删除/合并分支并签出分支。
签出和删除/合并应该是一个命令语句。
我该怎么办?
解决方案
我想你想要:
git checkout -B <branch-name>
为了清楚起见,请记住git checkout
永远不会进行任何新提交,但它可以 创建或重置分支名称。也就是说,假设您有:
C--D--E <-- branch1 (HEAD)
/
...--A--B
\
F--G--H <-- branch2
您可以将名称branch1
指向 commit H
,实际上检查 commit H
,现在使用以下命令:
git reset --hard branch2
它通过将它们替换为提交中的内容来丢弃您当前的工作树和索引内容,H
并为您提供:
C--D--E [abandoned]
/
...--A--B
\
F--G--H <-- branch1 (HEAD), branch2
但我认为您希望将名称branch2
指向现有提交E
,放弃提交F-G-H
,并附HEAD
加到名称branch2
。就是这样:
git checkout -B branch2
会做,导致:
C--D--E <-- branch1, branch2 (HEAD)
/
...--A--B
\
F--G--H [abandoned]
此操作将使您的索引和工作树不受干扰,因此,如果您将各种文件更改为与 commit 中存储的内容不匹配E
,它们在您的工作树中保持更改(如果在索引中更改,它们在索引)。
推荐阅读
- python - 从元组列表中获取每个元组的最大值列表
- ruby-on-rails - 启动 ruby 服务器时出错,特别是 SystemStackError
- angular - 角度 appBootstrap 方法
- git - 如何为 pack.windowMemory 设置值?
- c - C中的结构数组大小
- postgresql - 在 Mac 上安装 PostGIS for PostgreSQL 时出错
- java - LDAP Java 打印调试输出
- php - 如何在 laravel 中创建动态选择选项 chantiers ouvrages?
- perl - 在 perl 中将哈希推入数组,结果无法理解
- java - 创建一个简单的应用程序,无法获得清晰的按钮来工作