1、最常用的 git 命令有
#git help
add 添加文件内容至索引
bisect 通过二分查找定位引入 bug 的变更
branch 列出、创建或删除分支
checkout 检出一个分支或路径到工作区
clone 克隆一个版本库到一个新目录
commit 记录变更到版本库
diff 显示提交之间、提交和工作区之间等的差异
fetch 从另外一个版本库下载对象和引用
grep 输出和模式匹配的行
init 创建一个空的 Git 版本库或重新初始化一个已存在的版本库
log 显示提交日志
merge 合并两个或更多开发历史
mv 移动或重命名一个文件、目录或符号链接
pull 获取并整合另外的版本库或一个本地分支
push 更新远程引用和相关的对象
rebase 本地提交转移至更新后的上游分支中
reset 重置当前HEAD到指定状态
rm 从工作区和索引中删除文件
show 显示各种类型的对象
status 显示工作区状态
tag 创建、列出、删除或校验一个GPG签名的 tag 对象
安装: apt-get install git
理解:工作区、暂存区、本地仓库、远程仓库概念
2、基本操作
1、创建本地仓库
git init
2、查看工作区状态
git status
3、设置签名
局部签名设置:
git config user.name xxx
git config user.email xxx@email.com
备注:在工作仓库里查看 cat .git/config
全局签名设置:
git config --global user.name xxx
git config --global user.email xxx@email.com
备注:在用户目录查看 cat ~/.gitconfig
4、添加文件到暂存区
git add <file>....
5、删除暂存区文件
git rm --cached <file>...
6、将暂存区文件提交到本地仓库
git commit -m "commit message" <file>
3、查看历史记录
1、查看历史提交
git log
git log --pretty=oneline
git log --oneline
git reflog
4、版本回撤
1、基于哈希值
git reset --hard xxxxxxx 备注:git reflog获得哈希值
2、基于 ^ 符号
git reset --hard HEARD^ 备注:回撤一个版本,HEARD后一个^,回撤两个就有两个^
3、基于~符号
git reset --hard HEARD~3 备注:回撤3个版本
备注:除了--hard参数外还有--soft与--mixed参数,注意三个参数的区别如下:
a、git reset --soft
回退commit信息,把之前的代码回退到暂存区(即git add . 没有git commit -m “”).所以回退完成之后,需要git commit -m ""或者git commit --amend 重新提交就好
b、git reset --mixed或者 git reset (默认是git reset --mixed)
回退commit和暂存区(index)信息,即回退完需要重新git add . 和git commit -m ""或者git commit --amend
c、git reset --hard
回退所有,代码是指定分支的,暂存区(index)和工作区的代码都扔弃,慎用!
5、对比操作
1、对比文件
git diff file 备注:可以通过git status查看改都有那些文件
2、对比文件夹
git diff -urNa dir1 dir2
6、分支操作
1、查看项目所有分支
git branch -v
2、创建分支
git branch xxx
3、切换到xxx分支上
git checkout xxx
4、分支合并
git merge 要合并的分支名称 1备注:要切换到接收合并的分支上操作合并命令
2备注:合并如发生冲突,应先解决冲突再执行合并操作
7、远程仓库
远程库可以选择github、码云或其他托管平台,也可以自己搭建一个自己的远程仓库
1、查看当前远程仓库链接(默认没有链接)
git remote -v
2、添加远程链接
git remote add origin https://xxx/xxx.git 备注:origin为远程仓库别名
3、将本地仓库推送到远程仓库上
git push -u origin master 备注:一定现有本地仓库才能往远程仓库推送
4、从远程仓库克隆
git clone https://xxx/xxx.git 备注:其他人员往远程仓库推送,需要负责人将其他人员添加到项目工程里,获得权限
5、取回远程仓库分支更新,再与本地指定分支合并
a、修改比较简单,确定不会产生合并冲突
git pull <远程仓库别名> <远程分支名>:<本地分支名>
例如:git pull origin xxx:master
备注:如果远程分支要与本地当前分支合并可以省略本地分支名 git pull origin xxx
b、可能会出现合并冲突
git fetch <远程仓库别名> <远程分支名> 备注:拉去远程仓库分支到本地仓库
git merge <远程分支名> 备注:从远程仓库拉回的分支与本地分支合并,解决合并时冲突下`
8、补丁
1、获取某次提交的patch
git format-patch commit_xxx -n
备注:n指从xxx对应的commit开始算起n个提交
2、某两次提交之间的所有patch
git format-patch commit-old..commit-new
3、创建补丁
git diff commit_0 commit_1 > xxx.patch
4、检查patch是否能正常打入
git apply --check xxx.patch
5、打入补丁
git apply xxx.patch 或者 git am -s < xxx.patch