git - 如何在没有提交的情况下合并到分支?
问题描述
假设我有branch1
并且我创造了一个新branch2
的。我承诺两次branch2
。branch1
在没有任何存在证据的情况下,我如何将 branch2 恢复到原来的状态branch2
?
图表:
初始状态:
E---F branch2
/
A---B---C---D branch1
通缉状态:
A---B---C---D---E---F branch1
但相反,我得到了这样的东西:
A---B---C---D---E---F---(M) branch1 with extra Merge Commit
注意:我正在使用 Intellij IDEA 来执行我的 git 命令。
解决方案
在 git 分支中只是提交的指针
在您的情况下,您只需要执行以下操作:
git checkout branch1
git merge branch2
如果您没有向 branch1 提交任何新内容,它将在没有任何合并提交(git 优化)的情况下合并。
在正常情况下,git 应该总是创建一个合并提交。但是在这种特殊情况下,父分支自创建子分支以来没有进行任何提交,它只是更新引用。
E---F branch2
/
A---B---C---D branch1
合并后:
E---F branch1/branch2
/
A---B---C---D
如果您想在这里进行合并提交,请使用 --no-ff 选项合并。
git checkout branch1
git merge --no-ff branch2
如果您在创建新分支后有新的提交,合并提交创建是不可避免的。说例子:
E---F branch2
/
A---B---C---D ----G branch1
所以现在合并提交只是这里的救星:
E--------F branch2
/ \
A---B---C---D ----G-----H(merge commit)
branch1
在上述情况下,形成了一个新的合并提交,并使用其引用更新了 branch1。
推荐阅读
- tsql - T-SQL 使用日期格式记帐 sql server 的格式
- c - 如何使用指针为 c 中的结构添加多个值?
- reactjs - React JS 中的 ComponentWillMount 和 ComponentDidMount 有什么区别?
- c++ - C ++运行直到按键
- php - 在 curl 中模拟一个真实的浏览器
- jquery - jQuery - 使用 jQuery 元素变量时如何获取选定的选项?
- java - Java Graphics2D drawImage() 和 clip():如何应用抗锯齿?
- r - 使用具有不同列名的另一个 data.table 过滤 data.table
- python - 我在 Mac 上安装了自制软件的 Python 中的 Idle (idle3) 崩溃了
- .net - 仅针对选择查询忽略实体属性。但在更新/插入期间仍需考虑它们。EF 核心 2.1