0x01 什么是Git ?
Git是一个免费的开源 分布式版本控制系统,旨在快速,高效地处理从小型到大型项目的所有事务。
Git 易于学习, 占用存储区域小,具有闪电般快速的性能。
它超越了Subversion,CVS,Perforce和ClearCase等SCM工具,具有廉价本地分支,便捷的临时区域和 多个工作流程等功能。
SVN 是一款免费的集中式版本控制工具,Git 是一款免费的分布式版本控制工具
分布式和集中式的区别:
- 集中式开发——单个中心仓库:将项目集中存放在*服务器中,在工作的时候,大家只在自己电脑上操作,从同一个地方下载最新版本,然后开始工作,做完的工作再提交给*服务器保存。一旦服务器挂掉,便无法继续工作。
- 分布式开发——多个中心仓库:只要提供一台电脑作为版本集中存的服务器放就够了,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它也一样干活,只是交换修改不方便而已。
0x02 如何安装Git?
下载Git客户端
打开上面这个链接后,选择适合自己电脑操作系统的平台进行下载
Tips: 如果是windows 操作系统,请注意查看是32 位(x86)还是64位(x64)
可选:下载第三方GUI工具
虽然Git中带有内置的GUI工具(git-gui,gitk),但有几种第三方工具可供用户寻找特定于平台的体验。
也就是说如果你对Git 自带的GUI 工具不是很满意,官网也提供了好几种第三方Git GUI图形用户界面操作工具。
所有Git GUI 可选下载地址:https://git-scm.com/downloads/guis
这里我将简单介绍下最常用的两种:
GitHub Desktop
这个是Github 官方支持的Git 图形用户界面操作工具
TortoiseGit
这个用过SVN的应该很熟悉,大致效果就是这个样子
0x03 Git 配置SSH 认证
在使用git 实际开发中,我们使用SSH认证的较多也更加安全,也是非常推荐的做法。
啰嗦三句话:
- 君子性非异也,善假于物也。
- 初学命令要学,但实际开发能用工具高效搞定的就用工具
- 我们这里借助Eclipse工具,非常稳定和方便
SSH 认证支持两种,一种是DSA,一种是RSA
区别就是:DSA 用于签名,而 RSA 可用于签名和加密。
1.打开我们的STS(Eclipse的衍生版本)
2.生成并保存DSA(这一步非必要,因为大多数用的是RSA)
生成后默认保存路径是
C:\Users\fairy\.ssh
你将会发现多了两个文件
3.生成并保存RSA
生成后默认保存路径是
C:\Users\fairy\.ssh
你将会发现多了两个文件
4.复制RSA公钥
RSA公钥就是id_rsa.pub文件中的内容
5.添加到Github(Bitbucket或者其他代码托管平台)用户设置里面的SSH中
如果是GitHub 就这样
如果是Bitbucket 就像这样:
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
本篇完~
更多参考: