1. 什么是 Git
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
2. 为什么要学 Git
你是否经常因为修改文件而烦躁,
你是否经常因为误删文件而原地爆炸,
你是否经常因为创建过多副本而找不到自己想要的文件,
你是否经常因为删除可能会用到的文件而犹豫不决,
你是否经常因为协同办公的低效而浪费大量时间,
试试 git 吧,它会让你的人生更加精彩~
OK,言归正传,Git 的优点如下:
① 高效
它运行命令时间很短,可以极大效率的提升我们的工作效率,让我们可以把更多的时间用在别的地方。
② 离线工作
Git 支持离线操作,Git 可以在本地完成所有的操作(提交、合并、查看历史记录等),无需网络连接。
③ 后悔药
俗话说:世上没有后悔药。但是 Git 却有,几乎无论什么错误,我们都可以通过 Git 的命令来挽回。
④ 团队协作更流畅
Git 使得团队的工作更加顺利。Git 可以给团队提供分支来便于对项目进行延伸的操作,使得团队之间的相互工作既独立又紧密结合。
⑤ Fashion & 装 X
当别人还在不断创建副本、误删文件等原因低效工作的时候,你可以轻松的敲着代码来工作。可谓是低调中带着奢华,装得一手好 X 。
3.Git 简明语法
3.1 Git 安装完成后的设置
|
|
3.2 创建版本库
① 选择一个合适的地方,创建一个空的目录【确保目录名(包括父目录)不包含中文】
② 使这个目录变成 Git 可以管理的仓库
如果你没有看到 .git 目录,那是因为这个目录默认是隐藏的,用 ls -ah
命令就可以看见。
3.3 添加文件到 Git 仓库【只能跟踪文本文件的改动】
① 用命令 git add
告诉 Git,把文件添加到仓库
② 用命令 git commit
告诉 Git,把文件提交到仓库
3.4 文件状态查看 & 修改后的文件提交
|
|
提交修改:① git add ② git commit
3.5 查看历史修改状况 & 版本回退
|
|
HEAD表示当前版本,上一个版本就是 HEAD^
,上上一个版本就是 HEAD^^
,当然往上 100 个版本写 100 个 ^ 比较容易数不过来,所以写成 HEAD~100
。
3.6 工作区和暂存区
① 工作区(Working Directory):编辑文档的地方,电脑里能看见的目录
② 版本库(Repository):工作区中的一个隐藏目录 .git,其中最重要的就是称为 stage(或者叫index)的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD。
注:必须先
git add
再git commit
,否则文件的修改情况不会添加到版本库里。
|
|
3.7 撤销修改
|
|
总结:
① 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
② 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,第一步用命令git reset HEAD file
,然后执行git checkout -- file
③ 已经提交了不合适的修改到版本库时,想要撤销本次提交,用命令git reset --hard HEAD^
或者git reset --hard
版本号来进行版本回退
3.8 删除文件
|
|
从版本库中移除文件分为两步:
12 $ git rm xxx(文件名&后缀) ——移除版本库中的文件$ git commit -m "xxx"[提交说明] ——提交该请求,完成删除
PS:上述移除文件可以通过 git reset --hard 版本号
实现撤回
3.9 远程仓库
(1) 准备工作:
① 创建 SSH Key。
在用户主目录下,看看有没有 .ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开 Shell(Windows下打开Git Bash),创建 SSH Key
②登陆 GitHub,打开「Account settings」—「SSH Keys」—「Add SSH Key」粘贴 id_rsa.pub 的内容,完成远程仓库工作前的设置。
(2) 添加远程库:
① 首先在 GitHub 上创建一个新的仓库(注意输完名称后直接点击创建按钮!)
② 将新建的仓库与本地的仓库相关联
③ 将本地库的内容推送至远程库上
此时,只要对本地修改文件进行了 git commit
,就可以使用 git push origin master
进行同步。
(3) 从远程库克隆:
① 首先在 GitHub 上创建一个新的仓库(注意勾选 Initialize this repository with a README
按钮!)
② 克隆出一个本地库
3.10 分支管理
(1) 创建 & 合并分支:
(2) 解决冲突:
当 master 与分支都进行过修改时,合并分支会发生冲突,解决冲突之后,可以再次提交进行合并。
(3) 分支管理策略:
合并分支时,加上 --no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而 fast forward 合并就看不出来曾经做过合并。
(4) Bug 分支:
我们可以通过一个新的临时分支来修复产生的 bug,修复后,合并分支,然后将临时分支删除即可。
① 若你有正在进行的工作又不想提交可以通过 stash 功能使现有的工作暂时隐藏起来
② 若没有的话,直接在 master 上新建一个分支进行 bug 的修复,修改完之后直接合并即可
③ 恢复你正在进行的工作
(5) Feature 分支:
开发一个新的 feature,最好新建一个分支,以防止中途 feature 取消。
(6) 多人协作:
① master 分支是主分支,因此要时刻与远程同步;
② dev 分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
③ bug 分支只用于在本地修复 bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个 bug;
④ feature 分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
3.11 标签管理
(1) 创造标签:
(2) 操作标签:
(3) 删除远程库标签
3.12 使用 Github
参加开源项目
① Fork 一个项目
② $ git clone git@github.com:(your name)/(rep name).git
③ 可以修改提交自己的见解
④ 发起一个pull request
来参与项目
参考文档
如果想要了解更多,可以参阅下列文档。
[1] 廖雪峰学习网站Git教程(主要学习文档)
[2] Git官方Git 参考手册