Git 程序员必备技能

枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述Git 程序员必备技能相关的知识,希望能为你提供帮助。




文章目录

  • ??一丶Git 是什么???
  • ??二丶Git 环境??
  • ??2.1、下载 git??
  • ??2.2、Git 用户配置??
  • ??2.3、ssh公钥??
  • ??三丶Git 命令??
  • ??四丶Git工作原理??
  • ??五丶Git 分支管理(高级特性)??
  • ??5.1、Git 分支概念??
  • ??5.2、Git 分支命令??
  • ??5.3、实例讲解??
一丶Git 是什么?Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
二丶Git 环境 2.1、下载 git
??add-apt-repository ppa:git-core/ppa??
??apt-get update??
??apt-get install git??
2.2、Git 用户配置
(1)查看用户和邮箱(未配置则为空)
??git config user.name??
??git config user.email??
(2)配置/修改用户名和邮箱
??git config --global user.name "username"??
??git config --global user.email "email"??
2.3、ssh公钥
【Git 程序员必备技能】(1)检查ssh公钥(未配置则无路径)
??cd ~/.ssh??
??cat ~/.ssh/id_rsa.pub??
(2)生成公钥
先配置用户及邮箱再生成
??ssh-keygen -t rsa??
(3)SSH 公钥使用
将整段字符串copy添加到gitlab中。
三丶Git 命令git 基本命令
  • 查看 Git版本:??git --version??
  • 初始化仓库:??git init??
  • 下载远程仓库:??git clone < url> ??
  • 添加文件到暂存区:?? git add??
  • 查看仓库当前的状态,显示有变更的文件:??git status??
  • 比较文件的不同,即暂存区和工作区的差异:?? git diff??
  • 提交暂存区到本地仓库:?? git commit??
  • 回退版本:?? git reset??
  • 删除工作区文件:?? git rm??
  • 移动或重命名工作区文件:?? git mv??
  • 查看历史提交记录:?? git log??
  • 以列表形式查看指定文件的历史修改记录:?? git blame < file> ??
  • 远程仓库操作:?? git remote??
  • 从远程获取代码库:?? git fetch??
  • 下载远程代码并合并:?? git pull??
  • 上传远程代码并合并:?? git push??
  • 还原工作区文件修改:?? git checkout .?? (.代表所有文件,可指定文件路径)
  • 还原工作区文件添加:??git clean -rf?? (-rf代表全部清除,-f xxx 代表指定文件路径。也可直接rm文件)
  • 隐藏合并提交:??--no-merges ??
  • 指定日期:??--since、--before、--until 、 --after??? 例: ??git log --oneline --before=3.weeks.ago --after=2010-04-18?? 代表三周前且在四月十八日之后的所有提交
git diff
  • 尚未缓存的改动:??git diff ??
  • 查看已缓存的改动 :??git diff --cached ??
  • 查看已缓存的与未缓存的所有改动:??git diff HEAD ??
  • 显示未缓存改动的摘要(路径):??git diff --stat ??
git checkout
  • 清除工作区中未添加到暂存区中的改动:??git checkout . ??? 或?? git checkout< file> ??
  • 用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件,不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动:??git checkout HEAD .??? 或??git checkout HEAD < file> ??
  • ??git checkout -b AA origin/BB?? 切换到远程分支BB并在本地生成与之关联的AA分支。为了便于区分,远程分支和本地分支名称通常保持一致。使用次命令前先确认能否查询到远程分支,否则需要git pull -r 同步一下
git commit
  • 提交暂存区的文件:??git commit -m ??
  • 提交文件到暂存区+提交暂存区的文件:??git commit -am??
git push
  • ??git push < 远程主机名> < 本地分支名> :< 远程分支名> ??
    如果本地分支名与远程分支名相同,则可以省略冒号:
    ??git push < 远程主机名> < 本地分支名> ??
  • 将本地的 master 分支推送到 origin 主机的 master 分支:??git push origin master?? 相当于 ??git push origin master:master??
  • 忽略本地版本与远程版本有差异,强制推送:??git push --force origin master??
  • 删除主机的master 分支:??git push origin --delete master??
节点
  • 查看历史提交记录:??git log??
  • 查看历史提交记录(简洁版):??git log --oneline??
  • 逆向显示所有日志:??git log --reverse --oneline??
  • 查看指定分支节点:??git log xxx??
  • 指定作者节点:??git log --author=xxx??
  • 检索信息节点:??git log --grep=xxx??
  • 列举修改文件:??git log --name-status??
  • 列举修改文件:??git whatchanged(可指定开始节点)??
  • 列举2个节点修改文件:??git whatchanged -n 2(可指定开始节点)??
  • 查看节点修改内容:??git show xxx??
  • 对比两个节点内容:??git diff AAA BBB??
四丶Git工作原理
五丶Git 分支管理(高级特性) 5.1、Git 分支概念
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。
有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。 与许多其它版本控制系统不同,Git 鼓励在工作流程中频繁地使用分支与合并,哪怕一天之内进行许多次。 理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特,并且从此真正改变你的开发方式。
5.2、Git 分支命令
注意:本地至少会有一个 master分支,它是在我们 git init 后被默认创建出来的。
  • 创建分支:??git branch (branchname)??
  • 切换分支:??git checkout (branchname)??
  • 创建新分支并立即切换到该分支下:??git checkout -b (branchname)??
  • 合并分支:??git merge ??
  • 删除分支:??git branch -d (branchname)??
  • 查看本地分支:??git branch ??
  • 查看远程分支:??git branch -r??
  • ??git branch --set-upstream-to=origin/AA?? 本地创建的分支第一次push代码时会提示分支未关联,使用次命令是将本地当前分支关联到远程分支AA上。
5.3、实例讲解
??实例讲解??





    推荐阅读