2023年11月29日发(作者:)
LearningGitBranch
地址
在线学习Git
记录
基础篇
//提交记录
git commit
//创建分⽀
git branch
//合并的两种⽅式,两种⽅式区别在于提交远程仓库时,是保存提交的原始历史还是保存较为⼲净的提交树,以A分⽀合并B分⽀为例。
//第⼀种,在A(HEAD位置)分⽀中合并B分⽀,会在A分⽀提交新的记录。
git merge B
//第⼆种,从B(HEAD位置)分⽀取出⼀系列的提交记录"复制"它们再以A分⽀为⽗节点,将记录放⼊。
git rebase A
//也可以不管HEAD位置在哪,直接合并。
git rebase A B
⾼级篇
//分离HEAD,xx可为某提交记录的hash值、某tag。
git checkout xx
//相对引⽤(^),作⽤是指向某个提交记录的上⼀个记录。
git checkout HEAD^
//相对引⽤2(~),作⽤是指向某个提交记录的上x个记录。
git checkout HEAD~3
//撤销变更,reset⽤于回溯某个历史提交,回溯前的历史提交不再在提交历史树上;revert是回溯某个历史提交的,产⽣⼀个新的历史提交,并且回溯前的历史提交仍在历史树上。
git reset
git revert
移动提交记录
//Git Cherry-Pick,选择需要的提交记录的hash值,复制这些记录并顺序加⼊到当前HEAD后⾯。
git cherry-pick c1 c2 c3
//交互式rebase
git rebase -i xx
杂项
//只提取⼀个记录
//提交的技巧
//提交的技巧2
//Git Tag,以给c1提交历史打上v1标签为例
git tag v1 c1
//Git Describe,描述距离当前提交记录最近的标签,ref可为任何能被Git识别成提交记录的引⽤;若没有指定,则以HEAD位置为⽬标。
//输出结果,
//当ref提交记录上有某个标签时,则只输出标签名称。
⾼级
//多次rebase
//两个⽗节点,⼀个合并提交有两个⽗节点,可以⽤(^)加数字表⽰选择哪个⽗节点,Git默认选择合并提交的第⼀个⽗提交,如切换到master的第⼆个⽗节点:
git checkout master^2
//纠缠不清的分⽀
Push & Pull - 远程仓库
//Git Clone,通过⽹络协议如http、git、ssh克隆仓库。
git
//远程分⽀,如origin/master即为远程仓库对应的远程分⽀。
origin/master
origin/feature
origin/develop等
//Git Fetch,同步远程仓库和本地仓库的远程分⽀的操作。
git
//Git Pull,同步远程仓库和本地仓库的远程分⽀同时合并到相应的本地分⽀中,相当于fetch+merge。
git
//模拟团队合作
//Git push,同步本地仓库的变更上传到指定的远程仓库,并更新本地仓库的远程分⽀,不带参数的⾏为与Git的t的配置有关。
git push
//偏离的提交历史,push前要先pull合并更新后的远程仓库的历史,有两种⽅式,可以是fetch后merge(即pull),也可以是fetch后rebase(即pull --rebase)。
//锁定的master,需要⼀些pull request流程才能合并修改master分⽀,即以当前HEAD记录新建分⽀往远程仓库提交新的分⽀,并恢复master分⽀与远程仓库master同步。
关于origin和它的周边 - Git远程仓库⾼级操作
//推送主分⽀,即本地开发时会产⽣很多分⽀,当推送远程仓库时,可以合并其他分⽀到master分⽀再推送到远程仓库的主分⽀上,使⽤rebase进⾏操作。
//合并远程仓库,rebase和merge两种⽅式基于你对提交树的要求来选择。
//远程追踪,即如何关联本地分⽀和远程分⽀,如master和origin/master的关联关系是由分⽀的remote tracking属性决定的。
//当clone仓库时,Git会⾃动设置这个属性;以及⾃⼰可以指定这个属性,第⼀种⽅式可以通过远程仓库检出⼀个新的分⽀。
git checkout -b totallyNotMaster origin/master
//第⼆种⽅式如下,若不指定分⽀名,则会设置当前分⽀和远程分⽀关联。
git branch -u origin/master totallyNotMaster
//Git Push的参数(重点,也适⽤于fetch,pull),
git push
//Git Push的参数2(重点,也适⽤于fetch,pull),当来源和去向分⽀不⼀样时,⽤:将⼆者连在⼀起;若去向分⽀在远程仓库不存在,Git会为我们⾃动创建。
git push
//Git fetch的参数,与push相似,只是⽅向相反,
git fetch
//Git fetch的参数,与push相似,只是⽅向相反,
git fetch
//没有source的情况。
//删除远程仓库的side分⽀。
git push origin :side
//创建本地的分⽀。
git fetch origin :bar
//Git Pull的参数,与fetch类似,相当于fetch加merge,不仅更新了相应的
git pull
//Git Pull的参数,与fetch类似,相当于fetch加merge,不仅更新了
git pull


发布评论