Git 的基本使用、指令大全(笔记)

Git 基本介绍

  • Git 是一个免费的、开源的分布式版本控制系统,可以快速高效的处理小型到大型的各种项目
  • Git 易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具
  • 集中式管理:有CVS、SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新,这种方式每一个人都可以在一定程度上看到项目中其他人正在做些什么,而管理员也可以轻松掌控每个开发者的权限,管理一个集中化的版本控制系统要比各个客服端上维护本地数据库来的更加轻松,但是这样做也有很明显的缺点,如果服务器宕机一小时,那么在这一个小时内,谁都无法提交更新,也就无法协同工作
  • 分布式管理:有Git、Mercurial、Bazaar等,像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库),这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行修复。因为每个客户端的每一次文件提取操作,实际上都是一处对整个文件仓库的完整备份

Git 本地库指令

  • 设置用户签名
    git config --global user.name 用户名
    git config --global user.email 邮箱
    
  • 初始化本地库
    git init
    
  • 查看本地库状态
    git status
    
  • 查看历史记录
    git reflog
    git log		(距离当前 HEAD 的详细历史记录)
    
  • 添加到暂存区
    git add 文件名/.		( . 暂存所有文件 )
    
  • 提交到本地库
    git commit -m "日志信息" 文件名		( 后面不加文件名默认提交所有文件 )
    
  • 退出编辑模式
    Esc -> 
    :wq	( 保存文件并退出 )
    :q  ( 不保存文件并退出 )
    :q!  ( 不保存文件并强制退出 )
    

Git 分支指令

  • 创建分支
    git branch 分支名
    
  • 删除分支
    git branch -D 分支名 
    
  • 查看分支
    git branch -v
    
  • 查看分支
    当拉取远端分支时只有主分支,git branch -v 查看不了分支可以使用 git branch -a 查看远端的分支
    可以使用 git checkout -b 分支名 origin/分支名,将本地与远端分支联系起来(最好是本地和远端分支名一样)
    也可以使用 git checkout -t origin/分支名,直接将本地与远端分支联系起来(默认选择远端的分支名)
    
  • 切换分支
    git checkout/switch 分支名
    
  • 合并分支,把目标分支/记录合并到当前分支上
    git merge 分支名/版本号
    
  • 创建并切换分支
    git checkout -b 分支名
    
  • 冲突合并
    当两个分支对同一个文件进行修改合并时,会发生代码冲突
    
    <<<<<<< 当前分支
    code
    当前分支的代码......
    code
    =======
    code
    要被合并的分支的代码......
    code
    >>>>>>> 要被合并的分支
    

Git 远程库指令

  • 克隆远程仓库
    git clone 远程仓库地址
    
  • 推送到远程仓库
    git push 别名 分支
    git push		( 默认当前分支,当前对应的远程仓库 )
    
  • 拉取远程库代码,会自动合并分支
    git pull 别名 分支
    git pull		( 默认当前分支,当前对应的远程仓库 )  ==> fetch、merge的结合
    git pull --rebase  ==> fetch、rebase的结合
    
  • 拉取远程库代码,不会自动合并分支
    git fetch
    
  • 设置追踪分支,该分支关联远端仓库主分支
    git branch -u 远端分支 分支名
    
  • 查看别名,以及项目地址
    git remote -v
    
  • 创建别名
    git remote add 自定义别名 远程仓库地址
    
  • 跨团队操作
    fork 插入到指定远程仓库中,在本地以同样的方式修改代码,提交完成后通过 pull requests 向原远程仓库发送请求,是否同意修改
    

Git 历史指令

HEAD 指向当前工作的提交记录(默认为最新的状态),大部分提交树的 Git 指令都是根据 HEAD 的指向开始的

  1. HEAD~n 是从当前位置开始,表示上移多个历史记录,比如 ~3 就是上移三个,n为0或正整数
  2. HEAD^ 也是从当前位置开始上移一个
  3. 多个 ~n 和 ^ 之间可以混合使用
  • 切换 HEAD
    git checkout 版本号/HEAD^
    
  • 把当前版本/分支合并到目标版本/分支,当前版本/分支还存在(当前一般指自己的分支,目前则为主分支,把自己的分支合并到主分支)
    git rebase 当前版本/分支                               这种情况需要在目标版本/分支
    git rebase 当前版本/分支 目标版本/分支                  这种情况则不需要,操作完成后会直接切换到目标版本
    
  • 版本穿梭,撤销到指定历史记录
    git reset 版本号/HEAD~n
    
  • 版本穿梭,新增一个提交记录,这个提交记录就是要撤销到的指定记录
    git revert 版本号/HEAD~n 
    
  • 提交到主干版本库,还原版本库
    git push origin --force
    
  • 强制把分支移动到指定历史位置
    git branch -f 分支名 版本号/HEAD~n
    
  • 在别的分支中复制历史记录到当前分支,新增一条记录其内容和别的分支的历史对应
    git cherry-pick 版本号1 版本号2 ...  ==> 在新记录中生成多个对应的历史记录 版本号1' 版本号2' ...
    
  • 会出现一个UI界面,获取到 ~n 的数量,允许进行删除重排,生成一个新的分支
    git rebase -i HEAD~4
    
  • 为历史记录打标记
    git tag 标记名称 版本号
    git checkout 标记名称 ==> 也可以跳到对应的记录
    
  • 返回标记到当前历史记录的信息
    git bescribe 分支名/空 ==> 为空就是当前记录
    返回值 ==> 标记名称_距离的历史数量_g当前版本号,例:1.0版本_3_g6f970
    

Git 其他指令

  • 查询提交总次数
    git rev-list --all --count // 788
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值