git 常用命令详解(merge/rebase/cherry-pick)

简介: git常用命令详解。git merge将已提交的commit(自历史记录与当前分支分开以来的提交)合并到当前分支中。rebase变基的原理git-cherry-pick能应用(合并)已经存在的commit,即选择合并某个特定commit

merge

git merge 将已提交的commit(自历史记录与当前分支分开以来的提交)合并到当前分支中。

原始分支

      A---B---C topic
     /
    D---E---F---G master

checkoutmaster分支,使用命令git merge topic

      A---B---C topic
     /         \
    D---E---F---G---H master

git merge --abort将中止合并过程,并尝试重建合并前的状态。但是,如果在合并开始时有未提交的更改(尤其是在合并开始后进一步修改了这些更改),则git merge --abort在某些情况下将无法重建原始更改。因此警告:不建议运行git merge合并重要的未提交更改

rebase

git rebase的使用场景

  1. 合并多次commit为单次commit
  2. 分支合并

变基的原理

  1. 找到这两个分支(即当前分支 topic、变基操作的目标基底分支 master)的最近共同祖先 D
  2. 对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件(A+B+C=C')
  3. 然后将当前分支指向目标基底 C', 最后以此将之前另存为临时文件的修改依序应用。

原始分支

      A---B---C topic
     /
    D---E---F---G master

topic分支使用git rebase master

      C' topic
     /
    D---E---F---G maste

checkoutmaster分支,使用命令git merge topic

    D---E---F---G---C' master

注意:rebase 会改写历史记录,若该分支的提交已被其他使用者修改时,不建议使用

可选操作

  • p, pick 保留该commit
  • r, reword 保留该commit,但修改注释
  • e, edit 保留该commit,但修改提交
  • s, squash 保留该commit,将其前一个commit合并
  • f, fixup 操作与squash相同,但丢弃注释
  • x, exec 执行shell命令
  • d, drop 丢弃该commit

cherry-pick

git-cherry-pick 能应用(合并)已经存在的commit,即选择合并某个特定commit

原始分支

      A---B---C topic
     /
    D---E---F---G master

假设commit C的版本号为7289a5,在master分支使用git cherry-pick 7289a5

      A---B---C topic
     /
    D---E---F---G---C master

参考资料:

  1. git merge
  2. git book
  3. Git Community Book 中文版
  4. 彻底搞懂 Git-Rebase
  5. Git合并特定commits 到另一个分支
相关文章
|
7月前
|
存储 安全 开发工具
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
595 4
深度解决 Git “fatal: refusing to merge unrelated histories” 错误解析什么是历史分支优雅草卓伊凡
|
4月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
605 15
|
7月前
|
安全 开发工具 git
git的常用操作命令
git的常用操作命令
465 57
|
6月前
|
API 开发工具 git
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
315 0
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
|
5月前
|
存储 缓存 开发工具
Git stash命令的详细使用说明及案例分析。
通过上述案例,我们看到stash命令能够在不丢失进度的情况下,帮助开发者临时切换开发上下文,这在处理多个任务或紧急bug时特别有用。正确使用Git stash可以大大提高开发的灵活性和效率。
1732 0
|
8月前
|
存储 项目管理 开发工具
Git常用命令及操作技巧
以上是Git的常用命令及操作技巧,尽管看起来有些繁琐,但实际上只要花费一些时间进行实践,您将很快熟练掌握。随着使用熟练度的提高,您会发现Git对项目管理和协同工作的强大帮助。
206 20
|
10月前
|
人工智能 前端开发 Java
用git rebase命令合并开发阶段中多条commit提交记录
通过 `git rebase`,可以合并多个提交记录,使开发历史更简洁清晰。操作分为 6 步:查看提交历史 (`git log --oneline`)、设置需合并的提交数 (`git rebase -i HEAD~N`)、修改动作标识为 `s`(squash)、保存退出编辑、调整提交信息、强制推送至远程仓库 (`git push -f`)。此方法适合清理本地无关提交,但若有团队协作或冲突风险,需谨慎使用以避免问题。
1681 60
|
9月前
|
Linux 开发工具 git
版本控制工具:Git的安装和基本命令使用指南。
结束这段探险,掌握了Git你就等于掌握了一个宝藏,随时可以瞥见你的编程历程,轻松面对日后的挑战。Git,无疑是编程者的强大武器,开始你的Git探险之旅吧!
346 28
|
开发工具 git 开发者
git使用—rebase还是merge
转载自:https://segmentfault.com/q/1010000007704573/ 我猜现实中的情况是这样的: 使用 git 的人群中,不会用 rebase(哪怕是基础功能的)的至少一半(这个估计恐...
1906 0