git学习记录

git学习记录

远程分支

clone命令
git clone url;
  • 将url地址指向的远程仓库和分支克隆到本地,本地将会创建远程origin/master分支和本地master分支,每次pull都会更新origin/master分支的位置与而master 分支则是默认创建的跟随origin/master的分支
fetch命令(无参数)
git fetch;
  • 从远程仓库下载本地仓库中所有缺失的提交记录
  • 更新远程分支指针(如 o/master)
  • fetch命令不会更改本地的master分支指针,也不会修改本地文件的内容
fetch命令(有参数)
git fetch origin source;

从远程仓库的source分支下载本地同名分支缺失的提交记录,然后更新o/source分支指向。

git fetch origin source:destination;

从远程仓库的source分支复制本地destination分支没有的部分,然后更新destination分支指向

注:destination分支在本地仓库中不存在则git会自动创建

source不填时,git会在本地仓库自动创建一个destination分支

fetch同样支持例如side1^,side1~n的位置写法

merge命令
git merge sideName;
  • 合并分支
  • 此处的sideName指与当前选中分支合并的分支名
rebase命令
git rebase father;

将当前节点的父节点改为father节点

git rebase father child;

将child节点的父节点更改为father节点

pull命令(无参数)
git pull url;
  • pull命令相当于mergefetch命令的合并,先从远程仓库下载本地没有的记录,然后再与本地当前选中的分支合并
  • 记录会被先下载到 o/master 上,之后再合并到本地的 master 分支
pull命令(有参数)

实质上是fetch和merge的结合

push命令(无参数)
git push;
  • 将远程仓库与本地对比所缺少的部分进行提交,并更新o/master指向
  • 在推送至远程仓库时,要确保本地仓库包含当前远程仓库的每一次提交操作,才能成功push
  • 这是未指定参数方式, git 通过当前检出分支的属性来确定远程仓库以及要 push 的目的地
push命令(有参数)
git push remote place

例如:git push origin master这一条命令表示获取本地master分支所有的提交,然后到远程仓库originmaster分支查看是否有没有的记录然后将没有的记录提交。

此处的place既指push是从本地place分支开始又指push的目的地是远程仓库的place分支

注:此命令不受head指针影响,就算checkout任意一个节点,只要在push中指定place就可以成功推送

git push remote source:destination //适用与来源和目的不是同名分支

注:上述命令当destination不存在时,git会在远程仓库自动创建分支,当source不填,执行push的时候会删除远程仓库的foo分支和本地的o/foo分支

source可以接收分支名和位置参数,分支名例如side1,side2,位置参数例如side1^(side1之前的节点),side1~n(表示side1之前的n个节点)

历史偏移问题

当你以git clone克隆了远程仓库和master分支后进行开发,在开发的过程,中如果远程仓库已经更新了新的提交,此时本地保存的内容已经和远程仓库不同了,所以push指令无法生效

解决方案
  1. rebase方法

    fetch命令拉取最新的远程仓库内容

    git fetch;
    

    rebase命令更换本地当前节点的父节点,例如:本地c2提交原本依赖于远程仓库克隆的c1,但是现在远程仓库c1已经更新为c3,无法直接push推送。使用rebase将c2的父节点更新为fetch下来的c3,这样便可以推送到远程仓库了。

    下面代码中o/masterfetch下来的最新节点

    git rebase o/master
    

    以上两条命令可以简写为

    git pull --rebase;
    

    推送

    git push
    
  2. merge方法

    fetch命令拉取最新的远程仓库内容

    git fetch;
    

    merge命令将本地当前分支与最新获取的远程分支合并

    git merge o/master;
    

    以上两条命令可以简写为

    git pull;
    

    推送

    git push
    
总结
跟踪分支
  1. 方法一

    当从远程仓库克隆时会自动建立一个名为origin/master的远程分支和名为master的跟随分支(跟随origin/master分支),如果想自定义跟踪分支,可以使用checkout命令

    git checkout -b side1 o/master //令新建的side1分支跟随o/master分支,这时o/master更新,side1会一并更新,而master不会更新
    
  2. 方法二

    git branch -u o/master side1 
    

    两种情况下,均设置了跟踪o/master,当使用pull命令时,当远程仓库没有同名分支,只更新master分支。

    如果没有设置跟踪o/master,当使用pull命令时,当远程仓库没有同名分支,会新建side分支。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值