Git 程序员必备技能

Posted 王睿丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git 程序员必备技能相关的知识,希望对你有一定的参考价值。

文章目录

一丶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公钥

(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、实例讲解

实例讲解

以上是关于Git 程序员必备技能的主要内容,如果未能解决你的问题,请参考以下文章

Git算不算程序员的必备技能?

程序员必备技能-git 不会到还有人不会用吧,不会吧不会吧?

git常用操作命令(程序员必备技能)

必备技能-Git 使用规范流程

Java程序员必备技能内存管理机——垃圾标记

Git远程操作详解(新手必备)