git学习笔记

本文详细介绍了git的fetch、pull和push命令的使用,包括它们的区别和常见操作。git fetch用于获取远程仓库的更新而不立即合并,而git pull则直接将远程更新合并到本地。git push则用来将本地分支推送到远程仓库,创建或更新远程分支。此外,还涵盖了git的分支管理和远程分支操作。
摘要由CSDN通过智能技术生成

前言

关于git的一些介绍以及大部分用法,可以参考官方文档,本文只记录一些常用操作和一些比较难的操作。

git fetch和git pull对比

先用一张图来理一下git fetch和git pull的概念:

在这里插入图片描述git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

git fetch origin查找 “origin” 是哪一个服务器,从中抓取本地没有的数据,

git pull则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

git fetch用法

git fetch 命令:

git fetch <远程主机名> 
//这个命令将某个远程主机的更新全部取回本地,
并且更新本地数据库,移动 origin/所有分支 指针指向新的、更新后的位置。

git fetch (后面不加参数)
// 这个命令与上面的命令相似,远程主机用的默认远程主机

如果只想取回特定分支的更新,可以指定分支名:

git fetch <远程主机名> <分支名> //注意之间有空格

最常见的命令如取回origin 主机的master 分支:

git fetch origin master

取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:

git log -p FETCH_HEAD

git pull 用法

前面提到,git pull 的过程可以理解为:

git fetch origin master //从远程主机的master分支拉取最新内容 
git merge FETCH_HEAD    //将拉取下来的最新内容合并到当前所在的分支中

即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:

git pull <远程主机名> <远程分支名>:<本地分支名>

如果远程分支是与当前分支合并,则冒号后面的部分可以省略:

git pull origin dev

git push

git push的一般形式为 git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,第一个master是本地分支名,第二个master是远程分支名。

如果远程分支被省略,如下则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建

git push origin master

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master

git push origin:master

如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支

git push origin

如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r,查看远程的分支名

git push

git push 的其他命令

  1. git push -u origin master 如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push,不带任何参数的git push,默认只推送当前分支,这叫做simple方式,还有一种matching方式,会推送所有有对应的远程分支的本地分支, Git 2.0之前默认使用matching,现在改为simple方式,如果想更改设置,可以使用git config命令。git config --global push.default matching OR git config --global push.default simple;可以使用git config -l 查看配置

  2. git push --all origin 当遇到这种情况就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要 -all 选项

  3. git push --force origin git push的时候需要本地先git pull更新到跟服务器版本一致,如果本地版本库比远程服务器上的低,那么一般会提示你git pull更新,如果一定要提交,那么可以使用这个命令。

  4. git push origin --tags //git push 的时候不会推送分支,如果一定要推送标签的话那么可以使用这个命令

常用分支操作

  1. git 本地分支操作

    git branch //查看本地所有分支 
    
    git branch -r //查看远程所有分支
    
    git branch -a //查看本地和远程的所有分支
    
    git branch <branchname> //新建分支
    
    git branch -d <branchname> //删除本地分支
    
    git branch -d -r <branchname> //删除远程分支,删除后还需推送到服务器
    git push origin:<branchname>  //删除后推送至服务器
    
    git branch -m <oldbranch> <newbranch> //重命名本地分支
    /**
    *重命名远程分支:
    *1、删除远程待修改分支
    *2、push本地新分支到远程服务器
    */
    
    //git中一些选项解释:
    
    -d
    --delete:删除
    
    -D
    --delete --force的快捷键
    
    -f
    --force:强制
    
    -m
    --move:移动或重命名
    
    -M
    --move --force的快捷键
    
    -r
    --remote:远程
    
    -a
    --all:所有
    
    git check -b <新分支名称> //新建分支并切换到新建分支
    
    git branch -vv // 查看本地处于远程库中哪个
    
  2. git 操作远程分支

    把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):git push origin <本地分支名>:<远程分支名>,删除远程已有分支:git push origin --delete dbg_lichen_star

    $ git branch -a
    * dev
      master
      remotes/origin/dev
      remotes/origin/master
    
    推送到远程:
    $ git push origin dev:dev2
    Total 0 (delta 0), reused 0 (delta 0)
    remote:
    remote: Create a pull request for 'dev2' on GitHub by visiting:
    remote:      https://github.com/runooboy/runooboy.github.io/pull/new/dev2
    remote:
    To github.com:runooboy/runooboy.github.io.git
     * [new branch]      dev -> dev2
    
    结果:
    $ git branch -a
    * dev
      master
      remotes/origin/dev
      remotes/origin/dev2
      remotes/origin/master
    
    删除远程已有分支:
    $ git push origin --delete dev2
    To github.com:runooboy/runooboy.github.io.git
     - [deleted]         dev2
    
    结果:
    $ git branch -a
    * dev
      master
      remotes/origin/dev
      remotes/origin/master
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值