2019.06.02 - Git


基于《2018.06.07 - Git》

Git基础概念

  • 工作文件夹(Working Directory)
  • 暂存区(Stage,Index)
  • 本地仓库(本地Repository,HEAD指针)
    在这里插入图片描述

Git命令行

  • 分布式版本控制系统

  • SVN

  • 安装git

    • sudo apt-install git
  • 新建目录

    • mkdir learngit
  • 将目录变为git管理的仓库

    • git init
  • 提交文件至git

    • git add xxx(文件)
    • git commit -m ‘注释’
  • 第一次运行时会unable,需要告诉git:你是谁

    • git config --global user.email ‘youremail’
    • git config --global user.email ‘yourname’
  • 查看git记录

    • git log
    • git reflog查看所有log
  • 查看当前用户(global)配置

    • git config --global --list
  • 更新git

    • git add xxx(文件)
    • git commit -m ‘注释’
  • 回到某版本(丢失目前代码)

    • git reset --hard XXXX(版本号前几位)
    • git reset --hard e299
    • git reset --hard e360e
  • 撤销某次提交

    • git reset --soft XXXX(版本号前几位)
  • 使暂存目录的指定文件覆盖工作目录

    • git checkout – file
  • 查看仓库当前状态(查看工作目录与暂存目录的区别?)

    • git status
  • 删除

    • git rm xxxx(要删除的文件)

git diff

  • 比较工作区与暂存区
    • git diff 不加参数即默认比较工作区与暂存区
  • 比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
    • git diff --cached [ …]
  • 比较工作区与最新本地版本库
    • git diff HEAD [ …] (如果HEAD指向的是master分支,那么HEAD还可以换成master)
  • 比较工作区与指定commit-id(快照ID)的差异
    • git diff commit-id [ …]
  • 比较暂存区与指定commit-id的差异
    • git diff --cached [] [ …]
  • 比较两个commit-id之间的差异
    • git diff [] []
  • 使用git diff打补丁:Git diff 常见用法
  • git diff 汇总图
    在这里插入图片描述

本地与远程仓库(GitHub/Gitlab)

先建立本地仓库,后建立远程仓库

  • 与远程仓库建立管理
    • git remote add origin git地址
    • 比如:git remote add origin https://github.com/mlbjay/learngit.git
  • 同步远程仓库
    • 拿下来:git pull origin master
      • 会覆盖本地未commit的文件
    • 推上去:git push -u origin master(第一次需要些-u)
  • 注意:
    • git pull失败 ,提示:fatal: refusing to merge unrelated histories
    • 在进行git pull时,添加一个可选项:git pull origin master --allow-unrelated-histories

先建立远程仓库,后建立本地仓库

  • 直接拷贝到本地
    • git clone git地址

其他代码管理

  • coding
  • gitlife
  • 码云

分支

  • 查看分支

    • git branch -a:查看所有分支
  • 新建分支

    • git branch xxx(分支名称)
  • 切换分支

    • git checkout xxx(分支名称)
  • 合并分支

    • git merge xxx(分支名称)
  • 删除分支

    • git branch -d xxx(分支名称)
  • 在分支(other1)commit, push后,github会对应出现other1分支。

如何同步远程与本地

利用branch

  • 以master分支为线上代码
  • 新建分支编写自己的代码
  • 在新分支编写代码
  • push之前,保证与远程厂库一致
    • 用远程仓库强制覆盖本地仓库
    • git fetch --all
    • git reset --hard origin/master
    • git pull
    • git强制覆盖本地命令(单条执行)
      • git fetch --all && git reset --hard origin/master && git pull
  • 然后通过git merge合并,在master分支合并新分支
    • 合并过程中查看哪些部分不一致,一一核查
  • 最后在push master分支

利用git fetch

  • 更新本地的远程分支
    • git fetch origin
  • 比较本地与远程的差集 :(显示远程有而本地没有的commit信息)
    • git log master…origin/master
  • 统计文件的改动(未尝试成功)
# git diff <local branch> <remote>/<remote branch>
git diff --stat master origin/master

利用git stash

  • git stash保存当前工作代码到git栈,并恢复到之前版本
  • git stash apply恢复到之前保存工作代码

查看所有log

  • git reflog

git clone

  • http链接:git clone http链接
  • ssh链接:git clone ssh链接(没有成功)???
    • 用户名与密码的示例:git clone robin.hu@http://www.kernel.org/pub/scm/git/git.git
    • 会提示输入密码

git cherry-pick

对某个分支提交 其他分支上的某个commit

  • git cherry-pick:可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry-pick了。

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值