2023年11月29日发(作者:)

LearningGitBranch

地址

在线学习Git

记录

基础篇

//提交记录

git commit

//创建分⽀

git branch

//合并的两种⽅式,两种⽅式区别在于提交远程仓库时,是保存提交的原始历史还是保存较为⼲净的提交树,以A分⽀合并B分⽀为例。

//第⼀种,在AHEAD位置)分⽀中合并B分⽀,会在A分⽀提交新的记录。

git merge B

//第⼆种,B(HEAD位置)分⽀取出⼀系列的提交记录"复制"它们再以A分⽀为⽗节点,将记录放⼊。

git rebase A

//也可以不管HEAD位置在哪,直接合并。

git rebase A B

⾼级篇

//分离HEADxx可为某提交记录的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位置为⽬标。

git describe

//输出结果,表⽰离ref最近的标签,numCommits是表⽰这个reftag相差多少个提交记录,hash表⽰tag的提交记录hash

//ref提交记录上有某个标签时,则只输出标签名称。

__g

⾼级

//多次rebase

//两个⽗节点,⼀个合并提交有两个⽗节点,可以⽤(^)加数字表⽰选择哪个⽗节点,Git默认选择合并提交的第⼀个⽗提交,如切换到master的第⼆个⽗节点:

git checkout master^2

//纠缠不清的分⽀

Push & Pull - 远程仓库

//Git Clone,通过⽹络协议如httpgitssh克隆仓库。

git

//远程分⽀,如origin/master即为远程仓库对应的远程分⽀。

origin/master

origin/feature

origin/develop

//Git Fetch,同步远程仓库和本地仓库的远程分⽀的操作。

git

//Git Pull,同步远程仓库和本地仓库的远程分⽀同时合并到相应的本地分⽀中,相当于fetch+merge

git

//模拟团队合作

//Git push,同步本地仓库的变更上传到指定的远程仓库,并更新本地仓库的远程分⽀,不带参数的⾏为与Gitt的配置有关。

git push

//偏离的提交历史,push前要先pull合并更新后的远程仓库的历史,有两种⽅式,可以是fetchmerge(pull),也可以是fetchrebase(pull --rebase)

//锁定的master,需要⼀些pull request流程才能合并修改master分⽀,即以当前HEAD记录新建分⽀往远程仓库提交新的分⽀,并恢复master分⽀与远程仓库master同步。

关于origin和它的周边 - Git远程仓库⾼级操作

//推送主分⽀,即本地开发时会产⽣很多分⽀,当推送远程仓库时,可以合并其他分⽀到master分⽀再推送到远程仓库的主分⽀上,使⽤rebase进⾏操作。

//合并远程仓库,rebasemerge两种⽅式基于你对提交树的要求来选择。

//远程追踪,即如何关联本地分⽀和远程分⽀,如masterorigin/master的关联关系是由分⽀的remote tracking属性决定的。

//clone仓库时,Git会⾃动设置这个属性;以及⾃⼰可以指定这个属性,第⼀种⽅式可以通过远程仓库检出⼀个新的分⽀。

git checkout -b totallyNotMaster origin/master

//第⼆种⽅式如下,若不指定分⽀名,则会设置当前分⽀和远程分⽀关联。

git branch -u origin/master totallyNotMaster

//Git Push的参数(重点,也适⽤于fetchpull)指定远程仓库,是同时指定了提交记录的来源和去向。

git push

//Git Push的参数2(重点,也适⽤于fetchpull),当来源和去向分⽀不⼀样时,⽤:将⼆者连在⼀起;若去向分⽀在远程仓库不存在,Git会为我们⾃动创建。

git push :

//Git fetch的参数,与push相似,只是⽅向相反,参数是指定远程仓库的来源分⽀以及本地仓库的去向分⽀(注意是更新了远程分⽀)

git fetch

//Git fetch的参数,与push相似,只是⽅向相反,是指远程仓库上的位置,⽽是要下载到的本地仓库的位置。若git fetch没有参数,则会下载所有的提交记录

git fetch :

//没有source的情况。

//删除远程仓库的side分⽀。

git push origin :side

//创建本地的分⽀。

git fetch origin :bar

//Git Pull的参数,与fetch类似,相当于fetchmerge,不仅更新了相应的远程分⽀,还同时合并到当前分⽀。

git pull

//Git Pull的参数,与fetch类似,相当于fetchmerge,不仅更新了分⽀为远程分⽀,还同时合并到当前分⽀。

git pull :