前言
git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)不同。(维基百科)
安装
配置文件
~/.gitconfig1 2 3
| [user] name = <name> email = <email>
|
全局配置
查看所有配置
配置身份
统一配置
--global:全局配置
单独配置
配置用户名
<username>:用户名
--global:全局配置
1
| git config user.name "<username>"
|
配置邮箱
<email>:邮箱
--global:全局配置
1
| git config user.email "<email>"
|
配置别名
- 将
git <command>改为使用git <alias>
--global:全局配置
1
| git config alias.<alias> <command>
|
配置拉取策略
--global:全局配置
1
| git config pull.rebase false
|
1
| git config pull.rebase true
|
配置推送策略
simple:缺省值,推送当前分支到上游同名分支,如果没有则不推送
upstream:推送当前分支到上游同名分支,如果没有则创建
current:推送当前分支到远程同名分支
1
| git config push.default upstream
|
重置用户名密码信息
1
| git config --system --unset credential.helper
|
初始化仓库
追踪文件
- 将指定目录及其所有子目录的所有文件从工作区添加到暂存区
追踪所有文件
- 将当前目录及其子目录下的所有文件从工作区添加到暂存区
提交
- 将暂存区的所有文件提交到本地仓库,并产生一个新的提交记录,HEAD指针会移动到这个提交记录上
- 通过默认编辑器修改提交备注
快速提交
<text>:需要提交的备注内容
直接提交
直接快速提交
1
| git commit -a -m "<text>"
|
克隆
- 首次将所有文件从远程仓库直接克隆到本地仓库(当前目录下)
<git>:远程仓库地址
-b <branch>:指定分支,直接克隆指定分支,而不是主分支
<dir>:指定新的目录名,缺省值为仓库名
推送
-f:强制提交
--tags:包含标签
1
| git push <remote_name> <remote_branch_name>
|
1
| git push <remote_name> <local_branch_name>:<remote_branch_name>
|
删除远程分支
1
| git push <remote_name> --delete <remote_branch_name>
|
删除远程标签
1
| git push <remote_name> --delete <remote_tag_name>
|
推送时设置上游分支
1
| git push --set-upstream <remote_name> <remote_branch_name>
|
拉取
- 从远程仓库更新到本地仓库,并合并远程仓库的分支到本地仓库的分支
- 相当于先从远程仓库更新本地仓库(
git fetch),再合并本地仓库的分支到本地仓库的分支(git merge)
拉取时指定策略
获取
1
| git fetch <remote_name> <remote_branch_name>
|
标签
查看标签
查看全部标签
查看指定标签
创建标签
1
| git tag -a <tag_name> -m <text>
|
删除标签
分支
查看分支
--set-upstream-to=<remote_name>/<remote_branch_name>:设置上游分支
-v:查看最后一次的提交信息
--merged:查看所有已经合并到当前分支的分支
--no-merged:查看所有未合并到当前分支的分支
创建分支
--set-upstream-to=<remote_name>/<remote_branch_name>:设置上游分支
1
| git branch <branch_name>
|
删除分支
1
| git branch -d <branch_name>
|
强制删除分支
1
| git branch -D <branch_name>
|
重命名分支
1
| git branch -M <branch_name>
|
合并分支
--allow-unrelated-histories:允许不相关的历史
1
| git merge <remote_name>/<remote_branch_name>
|
变基分支
1
| git rebase <branch_name>
|
切换
切换分支
--track <remote_name>/<remote_branch_name>:设置上游分支
-b:创建并切换新分支
1
| git checkout <branch_name>
|
-c:创建新分支
1
| git switch <branch_name>
|
切换标签
远程仓库
查看关联的远程仓库
-v、--verbose:显示远程仓库地址
查看关联的远程仓库和分支
添加关联的远程仓库
<remote_name>:远程仓库映射到本地仓库的仓库名称,默认为origin
<url>:远程仓库地址
1
| git remote add <remote_name> <url>
|
删除关联的远程仓库
修改关联的远程仓库
1
| git remote set-url <remote_name> <url>
|
提交日志
查看提交日志
--graph:渲染分支
--pretty=oneline:每条提交只显示一行
查看完整提交日志
查看提交状态
-s、--short:简短的
重置HEAD位置
1
| git reset --hard HEAD~<num>
|
完成
参考文献
CSDN——成长中de大神
CSDN——云胡不喜?
博客园——ChuckLu
CSDN——AdleyTales
CSDN——halo1416