git命令网上有很多介绍,记住常用80个左右命令基本够用了,使用时常发现命令忘记。本文对自己常用的几个命令做下整理,供需要时查阅。
【初始配置】
# git config --list // 查看配置信息
# git config --global user.name "name" // 配置个人的用户名称
# git config --global user.email name@example.com // 配置电子邮件地址
# git config user.name // 查阅某个环境变量的设定,例如user.name
【git库创建】
1. git init // 创建本地git库
2. git init --bare <repo> // 本地创建一个名为repo的git源文件夹。该文件夹作为本地git源,
// 初始化后包含git源子文件夹,git clone下来没有源码。
3. git clone <XXX.git> <localrepo> // 下载git库到本地localrepo(默认master分支)
git clone <XXX.git> -b XX <localrepo> // 下载远端XX分支到本地
4. git pull origin master //从远程拉取最新版本到本地,自动合并merge
5. git fetchorigin master //从远程拉取最新版本到本地,不会自动merge。手动merge(git merge orgin/master)
6. git remote add upstream <原作者项目的URL> //在本地添加远端upstream分支,用于将个人分支和远端分支内容保持一致,避免pr时冲突
【查看修改记录】
1. git status // 查看本地修改的文件名列表
2. git diff // 查看本地修改的文件详细内容
3. git log //查看commit log记录
4. git show <commit id> // 显示某次提交的内容
git show <commit id> --stat // 显示某次提交内容修改的文件统计信息
【提交修改】
1. git add <file> // 将修改的file文件添加到工作目录(working directory)
2. git add . // 将本地所有修改的文件添加到工作目录
git add . -A // 将本地所有修改的文件添加到工作目录(文件/目录更改名称场景,
//加-A参数后git status查看会显示file1-->file2重命令信息,很直观)
3. git commit -a -m "XXX" // 提交本地工作目录所有修改
git commit -m “XXX” // 提交本地工作目录修改(已先执行git add命令)
4. git push origin master // 将本地分支修过push到远端的master分支
5. git rebase <commit id>^ -i // 重新设置基线。commit多个patch时,若需要修改前面commit的patch内容时,
//需要用rebase,此时后提交的patch内容会自动重新设置基线。
//该命令很常用,-i表示交互式
6. 删除一些没有git add的文件:
git clean参数: -n 显示将要删除的文件和目录,-f 删除文件,-df删除文件和目录
# git clean -f //删除文件
# git clean -df // 删除文件和目录
【撤销】
1. git reset --hard <commit ID> // 恢复到commit ID。commit ID之后的所有修改都会被删除,修改数据丢失。
// 操作时需要注意
git reset <commit ID> // 恢复到commit ID, commit ID之后的修改不会修改,仍然在本地,可以再次提交
【暂存功能】
1. git stash // 临时保存本地修改至暂存区。保存后,本地修改git diff看不到,默认恢复到上一次pull
2. git stash list // 打印本地暂存区栈信息;
3. git stash apply stash@{1} //将指定版本号为stash@{1}的工作取出来;
4. git stash pop // 将当前分支的最后一次缓存的内容释放出来,但是刚才的记录不存在list中
git stash apply // 将当前分支的最后一次缓存的内容释放出来,但是刚才的记录还存在list中
5. git stash clear // 清除暂存区(清除后stash中数据会丢失,操作前确认信息是否均已恢复)
【branch管理】
1. git branch // 查看本地分支
git branch -v //查看分支的最后修改
2. git branch --remote // 查看远端分支
3. git checkout master //切换到主分支
4. git merge xx //合并分支xx到主分支
5. git branch -d xx //删除分支,如果还未合并到master,则会出现不能删除提示,用-D可以强制删除
6. git checkout -b xx //建立分支并切换到分支xx
7. git checkout -b 本地分支名 远程分支名 //基于远程分支创建本地分支,eg: git checkout -b dev origin/dev
其中,远程分支名为git branch –r所列出的分支名, 一般是诸如“origin/分支名”的样子。如果本地分支名已经存在, 则不需要“-b”参数。
【生成patch】
1. git format-patch -1 <commit id> // 生成指定commit id的一个patch。补丁中含有这个补丁开发者的名字,
// 在应用补丁时,这个名字会被记录进版本库。
2. git format-patch -s -1 // 生成最近commit id的一个patch;
git format-patch -s -N // 生成最近commit id的N个patch;
3. git format-patch <commit id 1> <commit id 2> // 将commit id1 ~ commit id2之间提交生成patch
4. git diff > path // 将本地修改生成patch。该补丁中不包含开发者的名字。
【patch合入】
1. git am <XX.patch> //合入XX.patch(带commit id信息,XX.patch中的commit信息也一同合入)
2. git apply <XX.patch> --reject // 强制合入XX.patch(仅合入XX.patch中的修过内容,commit信息不合入,
// 需要重新git commit -a -m "XX"重新提交patch)