版本控制之Git 修炼手册

0x01 什么是Git ?

Git是一个免费的开源 分布式版本控制系统,旨在快速,高效地处理从小型到大型项目的所有事务。
Git 易于学习, 占用存储区域小,具有闪电般快速的性能。
它超越了Subversion,CVS,Perforce和ClearCase等SCM工具,具有廉价本地分支,便捷的临时区域和 多个工作流程等功能。

SVN 是一款免费的集中式版本控制工具,Git 是一款免费的分布式版本控制工具

分布式和集中式的区别:

  • 集中式开发——单个中心仓库:将项目集中存放在*服务器中,在工作的时候,大家只在自己电脑上操作,从同一个地方下载最新版本,然后开始工作,做完的工作再提交给*服务器保存。一旦服务器挂掉,便无法继续工作。
    版本控制之Git 修炼手册
  • 分布式开发——多个中心仓库:只要提供一台电脑作为版本集中存的服务器放就够了,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它也一样干活,只是交换修改不方便而已。
    版本控制之Git 修炼手册

0x02 如何安装Git?

下载Git客户端

https://git-scm.com/download/

打开上面这个链接后,选择适合自己电脑操作系统的平台进行下载

Tips: 如果是windows 操作系统,请注意查看是32 位(x86)还是64位(x64)

版本控制之Git 修炼手册

可选:下载第三方GUI工具

虽然Git中带有内置的GUI工具(git-gui,gitk),但有几种第三方工具可供用户寻找特定于平台的体验。

也就是说如果你对Git 自带的GUI 工具不是很满意,官网也提供了好几种第三方Git GUI图形用户界面操作工具。

所有Git GUI 可选下载地址:https://git-scm.com/downloads/guis

这里我将简单介绍下最常用的两种:

GitHub Desktop

这个是Github 官方支持的Git 图形用户界面操作工具

TortoiseGit

这个用过SVN的应该很熟悉,大致效果就是这个样子
版本控制之Git 修炼手册

0x03 Git 配置SSH 认证

在使用git 实际开发中,我们使用SSH认证的较多也更加安全,也是非常推荐的做法。

啰嗦三句话:

  • 君子性非异也,善假于物也。
  • 初学命令要学,但实际开发能用工具高效搞定的就用工具
  • 我们这里借助Eclipse工具,非常稳定和方便

SSH 认证支持两种,一种是DSA,一种是RSA

区别就是:DSA 用于签名,而 RSA 可用于签名和加密。

1.打开我们的STS(Eclipse的衍生版本)

版本控制之Git 修炼手册
2.生成并保存DSA(这一步非必要,因为大多数用的是RSA)

版本控制之Git 修炼手册
生成后默认保存路径是

C:\Users\fairy\.ssh

你将会发现多了两个文件
版本控制之Git 修炼手册

3.生成并保存RSA

版本控制之Git 修炼手册
生成后默认保存路径是

C:\Users\fairy\.ssh

你将会发现多了两个文件

版本控制之Git 修炼手册
4.复制RSA公钥
RSA公钥就是id_rsa.pub文件中的内容
5.添加到Github(Bitbucket或者其他代码托管平台)用户设置里面的SSH中
如果是GitHub 就这样
版本控制之Git 修炼手册
如果是Bitbucket 就像这样:
版本控制之Git 修炼手册

0x04 Git学习手册

官方提供了一个常用手册:Git 快速指南手册

4.1 配置工具

为所有的本地仓库配置用户信息

1. 设置Git 提交时显示的用户名称

 git config --global user.name "[name]"

Tips: 设置要附加到提交事务的名称,为了知道是谁提交的代码

2. 设置Git 提交时显示的用户邮箱

git config --global user.email "[email address]"

Tips:设置要附加到提交事务的电子邮件,为了方便联系到代码提交人

3. 设置命令行显示颜色

 git config --global color.ui auto

Tips: 启用命令行输出的有用颜色,为了冲突,已修改,多颜色显示。

4.2 管理仓库

如果远程仓库项目还没有初始化:

cd existing_folder
git init
git remote add origin [url]
git add .
git commit -m "init project"
git push -u origin master

Tips:
cd existing_folder------------------- 进入存在的文件夹
git init ---------------------------------- git 初始化,会生成隐藏文件.git
git remote add origin [url]---------- git 远程仓库定义别名
git add .------------------------------- git 添加当前路径下所有文件
git commit -m "init project"---------------------------- git 提交到本地库
git push -u origin master----------- git提交到远程仓库

Tips:
如果执行命令git push -u origin master 失败,则可能是由于仓库已经初始化了一个readme.md, 因为冲突导致提交失败。

这时候需要先执行命令获取最新的代码

git fetch origin master

然后执行合并命令

git merge origin master

最后执行命令提交

git push -u origin master----------- git提交到远程仓库

如果远程仓库项目已经初始化完成,我们只需要下载项目后修改文件并提交即可

git clone [url]
cd ProjectName
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Tips:
git clone [url] ------------------------- 下载仓库命令
cd ProjectName ---------------------- 进入项目文件夹
touch README.md------------------- 新建一个md格式的markdown > 文件
git add README.md------------------添加指定文件到版本控制
git commit -m "add README" ------提交到本地提交缓存库
git push -u origin master-------------提交到远程仓库

4.3 常用命令讲解

4.3.1 创建仓库

创建一个新的本地仓库

$ git init [project-name]

Tips:创建具有指定名称的新本地存储库

从现有URL获取仓库

 git clone [url]

Tips:下载项目及其整个版本历史记录

4.3.2 部分文件改变

查看编辑并制作提交事务

列出所有的改动状态

git status

Tips: 列出要提交的所有新文件或已修改文件

文件添加到版本控制

 git add [file]

Tips: 快照文件以准备版本控制

版本比较

git diff --staged

Tips:显示和上一个文件版本之间的文件差异

文件取消版本控制

git reset [file]

Tips:取消暂存文件,但保留其内容

提交代码并添加改动说明

git commit -m "[descriptive message]"

Tips: 在版本历史记录中永久记录文件快照

4.3.3 分支改变

命名一系列提交并组合完成的工作,

列出当前存储库中的所有本地分支

git branch

创建一个新的分支

git branch [branch-name]

切换到指定的分支并更新工作目录

git checkout [branch-name]

将指定分支的历史记录合并到当前分支中

git merge [branch]

删除指定的分支

git branch -d [branch-name]

4.3.4 重构文件名

重新定位和删除版本化文件

从工作目录中删除该文件并分阶段删除

git rm [file]

从版本控制中删除该文件,但在本地保留该文件

git rm --cached [file]

更改文件名并准备提交

git mv [file-original] [file-renamed]

4.3.5 保存碎片

废弃并恢复不完整的更改

临时存储所有已修改的跟踪文件(即已添加到版本控制的文件)

git stash

恢复最近隐藏的文件

git stash pop

列出所有隐藏的变更集

git stash list

丢弃最近隐藏的变更集

git stash drop

4.3.6 查看提交记录

浏览并检查项目文件的演变

列出当前分支的版本历史记录

git log

列出文件的版本历史记录,包括重命名

git log --follow [file]

显示两个分支之间的内容差异

git diff [first-branch]...[second-branch]

输出指定提交的元数据和内容更改

git show [commit]

4.3.7 覆盖提交

擦除错误和替换历史记录

Tips:
有时候不小心把配置文件中的数据库密码错误提交到公开库中,这时需要这个操作。

在[commit]之后撤消所有提交,在本地保留更改

git reset [commit]

丢弃所有历史记录并更改回指定的提交

git reset --hard [commit]

4.3.8 同步改动

注册存储库书签并交换版本历史记录

从存储库书签下载所有历史记录

git fetch [bookmark]

将书签的分支合并到当前的本地分支中

git merge [bookmark]/[branch]

将所有本地分支提交上传到GitHub

git push [alias] [branch]

下载书签历史记录并包含更改

 git pull

4.4 Eclipse Git 常用命令解释

Git Commit 将本地修改保存到本地仓库中

Git Push 将本地仓库修改推送到服务器上的仓库中

Git Commit and Git Push 提交到本地仓库后再提交到服务器仓库

Git Fetch 相当于是从远程获取最新版本到本地,不会自动merge

git merge 远程仓库与本地仓库合并

Git Pull 相当于是从远程获取最新版本并merge到本地= Git Fetch and Merrge

本篇完~


更多参考:

廖雪峰的 Git 在线教程

Git 的基础内容的学习

上一篇:Python抓取中文网页


下一篇:吴恩达机器学习中文版笔记:异常检测(Anomaly Detection)