在工作中,发现不少同学对Git的把握十分根底,同样作为版本控制系统,运用好Git比SVN要更有应战,需求对Git有必定的了解,才干在工作中,驾御好Git。

本文从最简略的根底入门,解说工作中常用的Git根底,把握这些是Git进阶的根底,满足日常工作场景。

装置

学习 git 前,你需求先装置 git,git 装置流程请移步这儿,里边有各个渠道的装置办法

根底

学习指令行工具要学会的第一步便是检查协助文档,能够用下面的指令检查 git 的协助信息

git help
git help xxx
git xxx --help
git xxx -h

接下来便是一些自定义信息了,比方装备用户名和方便指令(别号)

git config --global user.name yanhaijing
git config --global user.email yanhaijing@yeah.net
git config --global alias.st status #git st
git config --global alias.co checkout #git co
git config --global alias.br branch #git br
git config --global alias.ci commit #git ci

值得一提的便是装备换行符了,windows 上的换行符和 mac 和类 unix 不相同,在跨渠道时就痛苦了,为了一致,能够将提交到库房的换行符同装备成 unix 格式

  git config --global core.autocrlf input

假如想把 git 库房提交到服务器,或许还要装备秘钥,假如你不想每次都输入暗码的话

ssh-keygen -t rsa -C yanxuefeng@baidu.com # 生成秘钥
cat ~/.ssh/id_rsa.pub # 获取公钥,装备到github 的sshkey
ssh -T git@github.com # 测试是否收效

玩转 git 的第一步,你需求有一个库房,获取库房总共有两种办法

git init # 初始化一个库房
git clone url # 克隆一个已有库房

有时候咱们不想把某些文件提交到库房里,比方编译产生的临时文件,此刻.gitignore 能够发挥作用,.gitignore 的规矩如下

  • # 代表注释
  • 每行是一个 path,glob 模式匹配
  • !代表取非
  • *代表 0 个或多个字符
  • ?代表一个字符
  • []代表集合

.gitattributes 这个还没想好怎样讲,挖个坑坑坑坑

git 库房的工作流如下

简单的Git基础教程

git 的文件状况如下

简单的Git基础教程

想检查当时的库房状况能够运用git status,这个指令能够给出很多提示信息,建议经常运用

关于 commit 的提交,每个 commit 有必要是独立,完好的功用,坚持适当粒度,不要过大也不要过小;关于提交信息的描绘能够参阅下开源届的标准,也能够看下我之前整理的提交标准,下面是一个提交的例子

Header = type: subject(feat fix style refactor)
Body = list
feat: 添加共享功用
给每篇博文添加共享功用
- 添加共享到微博
- 添加共享到微信

在 git 内部一个 commit 的信息如下

简单的Git基础教程

但后面咱们会进行如下的笼统

简单的Git基础教程

分支

git 中的分支十分轻量,便是对 commit 的一个引证,默许 git 会新建一个 master 分支,git 中有一个特别的引证讲座 HEAD,他只想当时地点的方位

简单的Git基础教程

有时咱们需求新建或删去分支

git branch test # 新家分支test
git branch –d test # 删去test分支,当时HEAD有必要不能指向test分支

简单的Git基础教程

建好分之后,就该切换到那个分支去了

git checkout test # 切换到test分支

新建并切换分支,能够兼并成一个指令,下面的指令等同于上面两条指令

git checkout –b test

简单的Git基础教程

在新建的分支上开发一段时间后,你或许需求将其兼并到另一个分支去,而兼并分支共有 4 中不同的办法,关于这四种办法的差异和场景请看这篇文章图解 4 种 git 兼并分支办法

远端

一张图归纳远端和本地的关系,以及相应的操作指令

简单的Git基础教程

其实 git 在远端是一个完好的库房,和本地其实相同,也有 HEAD,也有 master;但咱们本地为了防止抵触,都将远端的引证姓名放到了 origin 下(origin 也可是别的姓名)

Remote HEAD -> xxx/HEAD(origin/HEAD)
Remote master -> xxx/master(origin/master)

在.git 下面的 config 文件里边又对应规矩的装备信息,fetch 哪一行,设置将远端refs/heads下的放到本地的refs/remotes/origin

[remote "origin"]
      url = git@github.com:yanhaijing/yanhaijing.github.io.git
      fetch = +refs/heads/*:refs/remotes/origin/*

对于远端最常用的操作便是更新和推送

git fetch origin # 将本地的远端和远端进行同步
git merge origin/master # 将本地的远端兼并到本地分支
git pull origin # 这相当于上面两条指令
git push origin master # 将本地推送到远程分支

关于 push 的有必要得说一下引证翻开,下面这些指令是相同的,git 内部都会主动翻开成最终一条

git push origin master
git push origin master:master
git push origin heads/master:heads/master
git push origin refs/heads/master:refs/heads/master

有时候咱们或许会检查远端的信息,比方看下远端地址啥的

git remote –v # 检查悉数远端的摘要信心
git remote show xxx # 检查具体远端的详细信息

有时候咱们也会添加或删去远端

git remote add xxx url # 廷加一个新的远端
git remote remove xxx # 删去一个远端

日志

有时咱们需求检查 git 的提交日志,能够运用git log,log 有大量参数,感兴趣的同学能够自行探索,但常用的就下面这么几个

git log -number # 显现最近几条
git log --oneline(--abbrev-commit --pretty=oneline)# 单行显现,显现简略commit id
git log --graph # 以树形展现
git log --decorate # 显现分支名等
git log --first-parent # 显现第一父元素(不显现merge进来的树形结构)
git log --all # 显现悉数分支

除了git log咱们还能够运用 gitk 这个工具,这是 git 2.0 今后加入的图形化工具,能够以更友爱等方法检查 log 树,常用的有两个参数

gitk –all # 显现悉数分支
gitk --first-parent # 显现第一父元素(不显现merge进来的树形结构)

下图是git log和 gitk 的指令复杂度和显现效果

简单的Git基础教程

简单的Git基础教程

注:假如你在 mac 下运用 gitk,或许会发现显现十分模糊,这是由于 retina 屏幕的问题,能够尝试下下面的办法

首先装置 retinizer,假如你没装置 brew 或许需求装置 homebrew

$ brew cask install retinizer

然后翻开 gitk 地点的目录

$ open /System/Library/Frameworks/Tk.framework/Versions/Current/Resources/

翻开 retinizer,并将 Wish.app 拖拽到 retiniaer 的界面,然后点一下那个按钮,然后就 ok 了

下面是带不带--first-parent的差异

简单的Git基础教程

有人用 git 的 commit 只做了台北的公交线路图,我表明给跪了,感兴趣猛戳这儿

diff

diff 指令常用的指令有两个

git diff file #检查指定文件的差异
git diff --stat #检查简略的diff结果

下图总结了 diff 悉数状况

简单的Git基础教程

常用指令总结

config
help status log
clone init
add commit
branch checkout diff
merge rebase
fetch pull push remote

总结

欢迎大家阅览本文,假如你觉得本文对你有协助,那就点赞加关注作者吧,假如对本文有任何疑问,欢迎在评论区沟通。

原创不易,求共享、求一键三连

我正在参与技术社区创作者签约计划招募活动,点击链接报名投稿。