本文详细总结了开发工作中需要掌握的git命令
1.配置(用户级)用户名和邮箱
用户名和邮箱是本地git终端的一个变量,每次commit都会有本地用户名和邮箱的记录。在push本地分支到远端时,也会依据远程仓库保存的邮箱验证一致性。
//配置用户名、邮箱
git config --global user.name 'xxq' //配置用户名
git config --global user.email 'xxx@xxx.com' //配置邮箱
git config user.name //查看用户名
//生成SSH密钥
ssh-keygen -t rsa -C "YourEmail"
cat ~/.ssh/id_rsa.pub
2.添加远端仓库地址
git remote add upstream 远端仓库地址 //upstream是给地址取的别名
git remote set-url origin 远端仓库地址 //修改远程仓库地址
git remote set-url upstream --push no_push //Never push to upstream master
git remote rm origin //删除远端仓库地址
git remote rename <old> <new> //修改别名
git remote -v
3.拉取远端代码
git clone 仓库地址
git fetch 远程仓库别名 //移动跟踪的远程分支<remote>/<branch>的指针
git rebase 远程仓库别名/远程分支名 //合并入最新代码
git pull //拉取最新代码
git checkout -b 本地分支名 远程仓库别名/远程分支名 //基于远程分支创建本地分支
4.分支操作
git分支,本质上就是一个指向commit对象的指针,创建分支相当于多一个指针指向当前的commit对象。git有一个HEAD的特殊指针,指向使用者当前处在的分支指针,切换分支相当于将HEAD指针指向指定分支的最新commit节点。
git branch 分支名 //创建本地分支
git branch --set-upstream-to=远程仓库别名/远程分支名 本地分支名 //关联远程分支
git branch -r //查看远程分支
git branch -a //查看所有分支
git branch -m 旧名 新名 //修改本地分支名
git branch -d/-D 分支名 //删除本地分支
git push 远程仓库别名 --delete 远程分支名 //删除远程分支
git branch -vv
git checkout 分支名 //切换分支
git checkout -b 分支名 //创建并切换分支
git checkout <commit> //切换分支到某次提交
git checkout -b 分支名 <commit> //基于某次commit创建分支
git stash //将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
git stash save '注释信息'
git stash pop <stash@{id}> //弹出stash堆栈中的内容,并应用到当前分支的工作目录上
git stash apply <stash@{id}> //将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,适应于多个分支的情况
git stash list //查看stash栈中的内容
5.提交代码
git status //查看工作区中文件状态
git add <file1> <file2>
git add . //从工作区添加所有更改文件到暂存区
git commit //从暂存区提交所有更改文件到本地版本库
git commit --amend //修改最新commit的提交信息
git rebase -i <commit> //合并多次提交,从后往前依次合并到前一个提交(或只修改提交信息)
git push -f 远程仓库别名 本地分支名:远程分支名 //推送本地代码到远端仓库
6.版本回退操作
git reset --hard <commit> [fileName] //回退(指定文件)版本到某次提交,工作区、暂存区的内容更改都将丢失
git reset [--mixed] <commit> [fileName] //回退(指定文件)版本到某次提交,工作区的内容更改保存,暂存区的将丢失,即未add状态
git reset --soft <commit> [fileName] //回退(指定文件)版本到某次提交,工作区、暂存区的内容更改保存,即未commit状态
7.文件差异对比
git diff
命令,默认查看的是工作区和暂存区之间文件的差异
git diff //查看工作区和暂存区之间所有的文件差异
git diff -- <file> //查看具体某个文件在工作区和暂存区之间的差异
git diff -- <file1> <file2> <file3> //查看多个文件在工作区和暂存区之间的差异
git diff HEAD //查看工作区与最新版本库之间的所有的文件差异
git diff <commit> //查看工作区与具体某个提交版本之间的所有的文件差异
git diff <commit> -- <file> //查看工作区与具体某个版本之间的指定文件名的文件差异
git diff --cached //查看暂存区和最新版本(HEAD)之间的所有文件差异
git diff --cached <commit> //查看暂存区和指定版本之间的所有文件差异
git diff --cached -- <file1> <file2> //查看暂存区和HEAD之间的指定文件差异
git diff --cached <commit> -- <file1> <file2> //查看暂存区和指定版本之间的指定文件差异
git diff <commit1> <commit2> //查看两个版本之间的差异
git diff <commit1> <commit2> -- <file1> <file2> //查看两个版本之间的指定文件之间的差异
git diff <commit1> <commit2> --stat //查看两个版本之间的改动的文件列表
git diff 本地分支名 远程仓库别名/远程分支名 //比较本地分支和远程分支的区别
8.查看版本历史
git log
git log --oneline
git log -n //显示前n条记录
git log --stat //显示修改的文件
git show <commit> //查看某次commit的修改内容
9.移除文件
git rm <file> //删除暂存区和工作区中的文件
git rm -f <file> //强制删除已修改的文件
git rm --cached <file> //删除暂存区文件,工作区文件保留
git rm -r <dir>/* //递归删除 某个目录/所有