欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > try learning-git-branching

try learning-git-branching

2025/2/22 2:11:44 来源:https://blog.csdn.net/qq_31362767/article/details/145643981  浏览:    关键词:try learning-git-branching

文章目录

      • merge
      • rebase
      • 分离 HEAD
      • 相对引用
        • 利用父节点
        • branch -f
      • 撤销变更
      • cherry-pick
      • 交互式 rebase
      • 只取一个提交记录
      • 提交的技巧
        • rebase 在上一次提交上amend
        • cherry-pick 在上一次提交上 amend
      • tag
      • 多分支 rebase
      • 两个parent节点
      • 纠缠不清的分支
      • 偏离的提交历史
      • 锁定的Main
      • 推送主分支
      • 合并远程仓库
      • 远程跟踪
      • push 的参数
      • push 的参数2
      • fetch 的参数
      • 没有 source 的 source
      • pull 参数

发现一个小工具,复习一下 git 相关的操作,对 git 的一些命令又有了深入的理解。
learning git branching

merge

  • 创建新分支 bugFix
  • git checkout bugFix 命令切换到该分支
  • 提交一次
  • git checkout main 切换回 main
  • 再提交一次
  • git mergebugFix 合并到 main
git checkout -b bugFix
git commit 
git checkout main
git commit
git merge bugFix

请添加图片描述

rebase

操作:

  • 新建并切换到 bugFix 分支
  • 提交一次
  • 切换回 main 分支再提交一次
  • 再次切换到 bugFix 分支,rebase 到 main 上
git checkout -b bugFix
git commit 
git checkout main
git commit
git checkout bugFix
git rebase main

请添加图片描述

分离 HEAD

git checkout c4

请添加图片描述

相对引用

利用父节点
git checkout HEAD^

寻找 bugFix 的父节点

git checkout bugFix^

请添加图片描述

branch -f

强制修改分支位置

git branch -f bugFix c0
git branch -f main c6
git checkout c1

请添加图片描述

或者

git checkout c1
git branch -f bugFix HEAD~1
git branch -f main c6

请添加图片描述

撤销变更

git reset HEAD~1
git checkout pushed
git revert HEAD

请添加图片描述

cherry-pick

git cherry-pick c3 c4 c7

请添加图片描述

交互式 rebase

git rebase -i HEAD~4

请添加图片描述

只取一个提交记录

git rebase -i main
git branch -f main bugFix

请添加图片描述

或者

git checkout main
git cherry-pick bugFix

请添加图片描述

提交的技巧

rebase 在上一次提交上amend
git rebase -i main
git commit --amend
git rebase -i main
git branch -f main caption

请添加图片描述

或者(多种方法尝试)

git rebase -i caption~2
git commit --amend
git rebase -i HEAD~2
git branch -f main caption
cherry-pick 在上一次提交上 amend
git checkout main
git cherry-pick newImage
git commit --amend
git cherry-pick caption

请添加图片描述

tag

git tag v0 c1
git tag v1 c2
git checkout v1

请添加图片描述

多分支 rebase

git rebase main bugFix
git rebase bugFix side
git rebase side another
git branch -f main another

请添加图片描述

两个parent节点

操作符 ^~ 符一样,后面也可以跟一个数字。

但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个 parent 提交。还记得前面提到过的一个合并提交有两个 parent 提交吧,所以遇到这样的节点时该选择哪条路径就不是很清晰了。

Git 默认选择合并提交的“第一个” parent 提交,在操作符 ^ 后跟一个数字可以改变这一默认行为。

git checkout HEAD~^2~
git branch -f bugWork HEAD  # git branch -f bugWork
git checkout main

请添加图片描述

或者

git branch bugWork HEAD~^2~

请添加图片描述

纠缠不清的分支

git checkout one
git cherry-pick c4 c3 c2
git checkout two
git cherry-pick c5 c4 c3 c2
git branch -f three c2

请添加图片描述

偏离的提交历史

git clone
git fakeTeamwork
git commit
git fetch
git rebase o/main
git push

请添加图片描述

或者

git clone
git fakeTeamwork
git commit
git pull --rebase
git push

请添加图片描述

锁定的Main

git reset --hard o/main
git checkout -b feature c2
git push   # git push origin feature

请添加图片描述

推送主分支

git fetch
git rebase o/main side1
git rebase side1 side2
git rebase side2 side3
git rebase side3 main
git push

请添加图片描述

合并远程仓库

git fetch
git rebase o/main main
git merge side1
git merge side2
git merge side3
git push

请添加图片描述

远程跟踪

git checkout -b side o/main
git commit
git fetch
git rebase o/main side
git push

或者

git checkout -b side o/main
git commit
git pull --rebase
git push

请添加图片描述

push 的参数

git push origin main
git push origin foo

请添加图片描述

push 的参数2

git push origin foo:main
git push origin main^:foo

请添加图片描述

fetch 的参数

git fetch origin c3:foo
git fetch origin c6:main
git checkout foo
git merge main

请添加图片描述

没有 source 的 source

git push origin :foo
git fetch origin :bar

请添加图片描述

pull 参数

git pull 到头来就是 fetch 后跟 merge 的缩写。可以理解为用同样的参数执行 git fetch,然后再 merge 所抓取到的提交记录。

git pull origin foo 相当于:git fetch origin foo; git merge o/foo

git pull origin bar:bugFix 相当于:git fetch origin bar:bugFix; git merge bugFix

git fetch origin c3:foo
git fetch origin c2:side
git merge foo
git merge side

或者

git pull origin c3:foo
git pull origin c2:side

请添加图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词