前言
Git是常用的版本管理器。网上也有很多基于Git的可视化操作软件,比如Github,SourceTree,TortoiseGit等。但直接使用Git语句,能获取更大的灵活性和更多的功能,也不用去熟悉不同的可视化软件的界面和操作流程。我在使用Git的基础工作流程如下:
- 下载Git,安装Git;
- 配置Git和Git bash界面;
- 依据需要,生成SSH密匙;
- 创建库;
- 查看文件差异;
- 配置.gitignore文件,不追踪特定类型或者文件夹下的文件;
- 添加文件到暂存区;
- 提交更改;
- 为重要的提交添加标签;
- 可以添加多个分支;
- 添加远程库;
- 获取远程库数据和信息;
- 推送本地分支到远程库;
下文为工作流程各个步骤列举了常用的操作、Git语句和例子。以表格的形式展现,方便查询。在日常的工作中,这些Git语句基本够用了。我在书写本文时,主要参考了Git的帮助文档,如果本文与帮助文档有出入,请以Git的帮助文档为准。
配置git
操作 |
语句 |
例子 |
查看git配置 |
git config --list |
|
查看git单个配置 |
git config <name> |
git config user.name |
设置git配置的值 |
git config <name> <value [value_regex]> |
git config user.name doggie |
不配置某个git值 |
git config --unset <name> [value_regex] |
git config --unset user.name |
配置 git bash窗口的显示效果 |
在git bash 窗口内点击鼠标右键,选择option选项,根据个人习惯配置窗口显示效果 |
|
如果没有特殊要求,这里只需要配置用户名和用户邮箱。配置文件有不同的起作用范围,比如–global,–system,–local等,默认是–local。在修改配置的时候需要特别留意。在git bash 界面,基本调整字体大小、字体、语言和字符集等。
生成SSH密匙
操作 |
语句 |
例子 |
1.查看.ssh文件夹内的文件信息,检查是否有已经生成的密匙 |
ls -a <path> |
ls -a ~/.ssh 检查默认路径下的.ssh文件夹 |
2.输入生成ssh密匙的指令 |
ssh-keygen |
|
3.输入存放密匙的路径 可以选择默认的路径,也可以输入新的路径 |
|
|
4.然后它会要求你输入两次密钥口令。如果你不想在使用密钥时输入口令,将其留空即可 |
|
|
5.根据公匙的存放路径,查看公匙信息 |
cat <path> |
cat ~/.ssh/id_rsa.pub 显示默认路径下的公匙 |
如果远程仓需要SSH验证,就需要生成SSH密匙。如果远程仓不需要,就忽略此项操作。
创建库
操作 |
语句 |
例子 |
创建一个空仓库 |
git init |
|
克隆一个远程仓 |
git clone <repository> [<directory>] |
git clone D:/Example.git MyExample |
创建一个裸仓库 |
git init --bare |
|
从现有仓库创建一个裸库 |
git clone --bare <repository> [<directory>] |
git clone --bare D:/Example.git |
裸仓放在服务器上,没有工作区。用户不能在裸仓操作具体的文件,但可以克隆和推送更新。
查看文件差异
操作 |
语句 |
例子 |
查看尚未暂存的文件 |
git diff |
|
查看下一次提交与最近一次提交的改变,也就是暂存文件与最近一次提交文件之间的差异 |
git diff --cached |
|
查看2个不同分支之间的差异 |
git diff <branchName> <branchName> |
git diff master dev |
查看当前分支的状态 |
git status |
|
设置.gitignore文件
操作 |
语句 |
例子 |
创建.gitignore文件 |
touch .gitignore |
|
编辑.gitignore文件 |
vim .gitignore |
Vim 编辑器的使用方法 |
查看.gitignore文件内容 |
cat .gitignore |
|
一个Unity开源项目的.gitignore文件。
操作文件
操作 |
语句 |
例子 |
增加单个文件或者增加文件夹 |
git add [<pathspec>…] |
git add Example.txt |
添加所有修改到暂存区 |
git add . |
|
从索引中删除某个文件,但保留工作树内的文件 |
git rm --cached <file> |
git rm --cached Example.txt |
从索引中删除某个文件,工作树内的文件也不保留 |
git rm <file> |
git rm Example.txt |
删除整个文件夹 |
git rm -r <path> |
git rm -r Assets/Scripts/Demo |
提交
操作 |
语句 |
例子 |
提交暂存区内的文件 |
git commit |
|
自动暂存已经修改或者删除的文件,然后提交更新,不包含尚未暂存的新文件 |
git commit --all |
|
附注标签
操作 |
语句 |
例子 |
显示现有标签名称 |
git tag --list |
|
查看指定标签 |
git show <TagName> |
git show V1.0 |
创建附注标签 |
git tag -a <TagName> |
git tag -a V1.0 |
推送标签 |
git push <respository> <TagName> |
git push origin V1.0 |
推送本地存在而远程没有的标签 |
git push --tags |
|
删除本地标签 |
git tag -d <TagName> |
git tag -d V1.0 |
删除远程标签 |
git push <respository> :refs/tags/<TagName> |
git push origin :refs/tags/V1.0 |
从标签处创建分支 |
git branch <NewBranchName> [<StartPoint>] |
git branch myV1.0 V1.0 |
分支
操作 |
语句 |
例子 |
显示分支信息 |
git branch --list |
|
从某个分支、节点或者标签创建分支 |
git branch <newbranchName> [<StartPoint>] |
git branch dev origin/dev 创建本地dev分支,跟踪远程分支dev |
重命名分支 |
git branch -m <NewBranchName> <OldBranchName> |
git branch -m test myV1.0 |
删除分支 |
git branch -d <BranchName> |
git branch -d dev |
删除远程分支 |
git branch -d -r <BranchName> |
git branch -d -r origin/dev |
删除远程分支 |
git push <respository> :<branchName> |
git push origin :dev |
切换分支 |
git checkout <BranchName> |
git checkout master |
合并其他分支到当前分支 |
git merge <BranchName> |
git merge dev |
远程
操作 |
语句 |
例子 |
显示远程仓信息 |
git remote -v |
|
添加远程仓 |
git remote add <name> <url> |
git remote origin test D:/Example.git |
重命名远程仓 |
git remote rename <old> <new> |
git remote rename origin example |
删除远程仓 |
git remote remove <name> |
git remote remove example |
下载对象和引用
操作 |
语句 |
例子 |
抓取远程库所有分支 |
git fetch [<repository>] |
get fetch |
抓取远程库特定分支 |
get fecth <respository> <refspec>… |
get fecth origin master |
抓取远程仓的<src>分支,更新本地仓的<dst>分支 |
get fecth <respository> <src>:<dst> |
git fetch origin master:mymaster 抓取远程master分支,更新本地仓的mymaster分支 |
推送
操作 |
语句 |
例子 |
推送更新 |
git push [<respository>] [<refspec>…] |
|
将当前分支推送到远程仓的同名分支 |
git push <respository> HEAD |
git push origin HEAD |
将本地仓的分支推送到远程的同名分支 |
git push <respository> <branchName> |
git push origin master |
将本地仓的<src>推送到远程的<dst>分支 |
git push <respository> <src>:<dst> |
git push origin dev:master |
其他
操作 |
语句 |
例子 |
查看git操作记录 |
history |
|
查看帮助文档 |
git help <Command|Guide> |
git help push |