4. Git分支之实战入门

git快速入门

一个很好的git实践学习入门网站

learngit

总体来说过一遍这个网站就有了基本的框架,然后就可以在实践中边用边学了,学习的原则就是:多用多查多积累。

基本配置
git init

初始化本地仓库

git config --global user.name "XingMing"
git config --global user.email "xxxxx@gmail.com"

配置用户名和邮箱

本地仓库操作
  1.  git add [file]
    

    将文件添加到暂存区。

  2.  git commit -m 'information'
    

    提交到本地仓库

  3. git branch <分支*> 
    

    在当前提交上创建新分支<分支*>

  4. git checkout <分支*>
    git checkout -b <分支*>
    

    切换到<分支*>

    创建并切换到<分支*>

    git checkout 
    git checkout -- <file>
    

    用暂存区(本地仓库)全部或指定的文件替换工作区(当前目录)的文件

  5. git merge <分支*>
    

    将<分支*>合并到当前分支上

  6. git rebase <分支*> 
    git rebase <分支*> <分支>
    

    将当前分支移到<分支*>上

    将<分支>移到<分支*>上

    image-20220314104642055

  7. HEAD指针指向分支指针,分支指针指向最新提交。HEAD->分支指针->最新提交

  8. 相对引用^:HEAD^表示HEAD的上一次提交,git checkout HEAD^表示移动到HEAD所指分支的上一个提交

  9. git branch -f <分支\*> <HEAD~2>
    

    将<分支*>移动到<HEAD>的前两级提交

  10. git reset <HEAD~1> 
    

    将当前分支在本地回退到上一次提交

    image-20220314104802493

  11. git revert <HEAD~1> 
    

    将当前分支在新的提交上回退到上一次提交的状态(即图中C2’=C1,可以push到远程)

    ![image-20220314104827989](https://img-blog.csdnimg.cn/img_convert/d47311e6b6009955d5cbf48570cf0e6a.png)
    
  12. git cherry-pick <commit1 commit2 commit3 ...> 
    

    将提交1、提交2、提交3移动(复制)到当前提交下

    image-20220314105039394

  13. git rebase -i <HEAD~3> 
    

    用交互式rebase编辑当前分支的前3次提交,可以移动和删除其中的提交记录

  14. git tag <v0> <C1> 
    

    在提交记录C1打上标签v0

  15. git describe <ref>
    

    描述离<ref>(缺省时为HEAD)最近的标签

    输出的结果是这样的:

    <tag>_<numCommits>_g<hash>
    

    tag 表示的是离 ref 最近的标签, numCommits 是表示这个 reftag 相差有多少个提交记录, hash 表示的是你所给定的 ref 所表示的提交记录哈希值的前几位。

密钥配置

在git bash中输入:

ssh-keygen -t rsa -C "email address"

执行命令生成ssh key,选择保存的位置,设置密码(回车默认)

默认会在用户文件夹下创建.ssh文件夹,里面有2个文件id_rsa和id_rsa.pub,其中本机ssh密钥就在id_rsa.pub中。

随后在github或者gitee中的设置里面把上面的id_rsa.pub中的内容添加到SSH就行。

远程仓库操作
  1. git clone
    

    将远程仓库克隆到本地

  2. git fetch
    git fetch origin <place>
    git fetch origin <source>:<destination>
    

    将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态,但不会改变本地仓库的状态。它不会更新你的 main 分支,也不会修改你磁盘上的文件。

    第二第三行git指令与下面的push类似,只不过方向相反。

  3. git fetch; git merge o/main
    

    image-20220314105226041

    先将远程仓库的最新内容更新到本地仓库,再合并分支

    image-20220314105211798

  4. git pull
    git pull --rebase
    

    效果等于上面git fetch + git merge,拉取最新状态到本地并合并分支

    如果加上–rebase后缀的话,效果等于git fetch + git rebase,拉取最新状态到本地并将当前分支移到最新的远程分支下

  5. git push
    git push origin <place>
    git push origin <source>:<destination>
    

    将本地推送到远程仓库,若远程仓库状态已更新(多人协作时),则会push失败。通常解决方法是先使用git pull或者git pull --rebase拉取更新本地后再push推送

    <place>可以指定push哪个分支

    <source>:<destination>可以指定本地哪个分支push到远程哪个分支,若目的分支<destination>不存在,则自动创建远程分支。当<source>缺省时,则会删掉远程<destination>分支

  6. Remote Rejected远程服务器拒绝。

    ! [远程服务器拒绝] main -> main (TF402455: 不允许推送(push)这个分支; 你必须使用pull request来更新这个分支.)
    

    通常情况下,我们应在在本地创建一个新的分支,然后再push分支到远程仓库

  7. git checkout -b foo o/main
    git branch -u o/main foo #若当前在foo分支上,可以不用加foo
    

    上面两句都是同样的效果,创建(检出)一个名为foo的新分支并让其跟踪远程仓库的main,在下次pull的时候由foo跟踪远程仓库的main的位置,使用foo分支commit后在下次push的时候同样会更新远程仓库的main的位置

名词解释
  1. origin
    

    远程仓库链接的别名。origin等价于https://github.com/user1/repository.git

  2. fork
    

    将当前(别人的远程仓库)复制一份到自己的github账户上,成为自己的远程仓库

    20150914111018053

    后续可以进行clone和push

  3. pull request
    

    在fork别人的项目并做了修改完善后,可以对原作者发起一个pull request,请求他pull我们更新完后的仓库状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值