Git常见用法
[TOC]
常见命令行
命令行 |
解释 |
git config --list |
查看git配置信息 |
git config user.name |
查看git用户名 |
git config user.email |
查看git邮箱 |
git config --global user.name "nameXxx(要配置的用户名)" |
全局配置用户名 |
git config --global user.email "emailXxx(要配置的用户邮箱)" |
全局配置邮箱 |
命令行 |
解释 |
git init |
初始化本地git项目 |
命令行 |
解释 |
git status |
查看缓存与当前工作目录的状态 |
git status -s |
查看缓存与当前工作目录的状态,简短输出结果 |
-s返回的状态码 |
解释 |
A |
本地新增的文件,服务器上没有 |
C |
文件的一个拷贝 |
D |
本地的删除,服务器上还在 |
M |
文件的内容或者mode被修改了 |
R |
文件名被修改了 |
T |
文件的类型被修改了 |
U |
文件没有被合并(需要合并后才能进行提交) |
X |
未知状态(可能是遇到了git的bug) |
? |
未被git进行管理,可以使用git add Xxx添加进git然后能够被git管理 |
命令行 |
解释 |
git add Xxx |
添加某个或多个文件 |
git add . |
添加目录下的所有未被管理的文件 |
git add -u |
添加先前已经add过的文件的修改,不会把还未add过的文章添加到暂存区 |
- diff:显示已写入缓存与已修改但尚未写入缓存的改动的区别
命令行 |
解释 |
git diff |
尚未缓存的改动 |
git diff --cached |
查看已缓存的改动 |
git diff -- HEAD |
查看已缓存的与未缓存的所有改动 |
git diff --stat |
显示摘要而非整个diff |
git diff --staged |
同git diff --cached |
git diff localXxx(要查看的某个文件的路径) |
查看某个文件的修改内容 |
命令行 |
解释 |
git commit -m "描述内容" |
在add之后,将修改的文件添加到暂存区 |
git commit -a -m "描述内容" |
不需要add,直接在这个命令行执行add操作,并将修改的文件添加到暂存区 |
命令行 |
解释 |
git reset HEAD -- xxx(带有完整路径的文件) |
取消缓存已缓存的内容 |
git reset --hard commitIdXxx(提交的某次commitId) |
回退版本到某次提交 |
git reset --hard HEAD^ |
会退版本到上一次提交 |
实际的操作是将该文件在“索引”中的校验和重置为最近一次提交中的值,git add 会计算一个文件的校验和,将它添加到“索引”中,而 git reset HEAD -- xxx 将它改写回原先的,从而取消缓存操作。
命令行 |
解释 |
git rm --cached xxx(带有完整路径的文件) |
取消缓存已缓存的内容,同git reset HEAD -- xxx |
git rm -f xxx(带有完整路径的文件) |
取消缓存已缓存的内容,并且从磁盘中删除该文件 |
命令行 |
解释 |
git branch |
列出你在本地的分支,你所在的分支的行首会有个星号作标记 |
git branch -r |
查看远程的分支 |
git branch -a |
查看本地和远程的分支,远程分支以remotes/开头 |
git branch --all |
同git branch -a命令一样 |
git branch -m localOldXxx(旧的分支名称) localNewXxx(新的分支名称) |
修改本地分支名称, |
git branch localXxx(分支名字) |
创建新分支,分支名字就是localXxx |
git branch -d localXxx(分支名字) |
删除本地分支(需要当前分支不是要被删除的分支,就是需要先切换到其他分支上去) |
git branch -D localXxx(分支名字) |
强行删除本地分支(需要当前分支不是要被删除的分支,就是需要先切换到其他分支上去) |
git branch -v |
查看本地所有分支的最后一次提交的日志 |
git branch -r -v |
查看远程所有分支的最后一次提交的日志 |
git branch -a -v |
查看本地和远程所有分支的最后一次提交的日志 |
git branch -vv |
查看本地分支和远程分支的关联关系 |
git branch --set-upstream-to=origin/remoteXxx(远程分支名字) localXxx(本地分支) |
本地分支关联远程分支 |
git branch --unset-upstream |
撤销本地分支与远程分支的关联 |
git branch origin:remoteXxx(远程分支名字) |
删除远程分支 |
git checkout -- localFileXxx(本地文件路径) |
丢弃工作区自从上次提交后修改的单个文件 |
git checkout -- * |
丢弃工作区自从上次提交后所做的所有修改 |
git checkout localXxx(分支名字) |
从当前分支切换到分支localXxx |
git checkout -b localXxx(分支名字) |
在本地的当前分支上创建新分支,并切换到新分支 |
git checkout -b localXxx(分支名字) origin/remoteXxx(远程分支名字) |
从远程分支拉取并创建本地分支 |
问题:
1.出现过一次使用了git branch命令之后,但是显示的分支中没有一个分支前面标明了,也就是没法分辨出当前分支是哪个分支,最后发现原因是没有提交到缓存造成的,进行git commit之后,再使用git branch,显示的分支中就有一个分支的前面有,标明了当前分支;
命令行 |
解释 |
git merge xxx(分支名字) |
将xxx分支合并到当前分支中 |
git merge --abort |
取消合并操作,回退到合并之前 |
命令行 |
解释 |
git log |
查看本地当前分支中提交的记录 |
git log remotes/origin/remoteXxx(要查看的远程仓库的分支) |
查看远程仓库某个分支的提交记录 |
git log --oneline |
查看历史记录的简洁版本 |
git log --pretty=oneline localXxx(本地某个文件的路径) git show commitIdXxx(提交的commitId) localXxx(本地某个文件的路径) |
查看某个文件的修改 |
git log --graph |
查看历史中什么时候出现了分支、合并(可以与--oneline一起用) |
git log --decorate |
查看tag标签 |
git log --author="userNameXxx" |
查看某个用户userNameXxx提交的日志(userNameXxx是被查询用户的用户名) |
git log fileNameXxx(文件路径) |
查看某个文件的修改记录 |
git log -p fileNameXxx(文件路径) |
查看某个文件的修改记录以及每次提交的diff |
git log --stat |
查看被修改文件的统计信息,添加或删除了多少行 |
git log --stat -3 |
查看最近三次的修改 |
git log --stat --author=nameXxx(用户名称) |
查看自己的修改 |
git log --stat -2 --./localXxx(文件路径) |
查看某个文件最近两次的修改 |
git log --name-only |
仅在提交信息后显示已修改的文件清单 |
git log --name-status |
显示新增、修改、删除的文件清单 |
命令行 |
解释 |
git show commitIdXxx(某次的commitId) |
查看某次提交的内容 |
git show commitIdXxx(某次提交的commitId) fileNameXxx(文件路径) |
查看某次提交中某个文件的变化 |
git show commitIdXxx(某次提交的commitId) --stat |
查看某次提交涉及的所有文件名称 |
- tag:标签
如果你达到了一个重要的阶段,并希望永远记住那个特别的提交快照,可以使用git tag给它打上标签。该tag命令基本上会给该特殊提交打上永久的书签,从而使你在将来能够用它与其他提交比较。通常,你会在发布一个新版本或者交付一些东西的时候打个标签。
命令行 |
解释 |
git tag |
查看所有的tag标签 |
git tag -a xxx |
创建一个带注解的标签 |
命令行 |
解释 |
git fetch |
从远端服务器下载新的分支和数据(就是与远程仓库同步) |
git pull |
从远端服务器提取新数据(相当于git fetch之后git merge) |
git pull origin retomeXxx:localXxx |
从远端服务器拉取分支到本地的分支; |
其中,git pull origin这个是固定写法,后面remoteXxx是远程分支的名字,localXxx是本地分支的名字;
命令行 |
解释 |
git push [alias] xxx |
将本地分支xxx推送到远端仓库默认分支上 |
git push origin localXxx(本地分支):remoteXxx(远程分支) |
将本地分支localXxx推送到远端仓库并新建远端分支remoteXxx |
git push [alias] -d xxx |
删除远端仓库的xxx分支 |
git push [alias] : xxx |
推送一个空分支到远端仓库指定分支,也就相当于删除远端仓库xxx分支 |
git push origin HEAD:refs/for/xxx(远程分支名字) |
推送本地分支数据到远程分支,因为项目使用gerrit,所以这个指令是为了能在gerrit上面看到代码 |
git push origin master
//删除远端仓库分支;
git push origin : test
//删除远端仓库分支;
git push origin -d test
命令行 |
解释 |
git push xxx yyy |
将本地的yyy分支推送到xxx远端上的yyy分支 |
命令行 |
解释 |
git remote |
查看远端别名 |
git remote -v |
查看远端别名以及实际链接地址 |
git remote add [alias] [url] |
将url地址和以alias的别名添加为本地的远端仓库(就是将本地仓库与远端仓库建立连接) |
git remote rm [alias] |
删除远端仓库 |
git remote set-url origin |
修改远程地址为新的地址,new url是新的远程仓库地址 |
git remote show origin |
查看当前仓库的远程地址 |
命令行 |
解释 |
git clean -f |
删除未跟踪的文件 |
git clean -fd |
删除未跟踪的文件/目录 |
git clean -xfd |
连gitignore的未跟踪文件/目录也一起删除(这个命令要慎用) |
git clean -f -n |
查看要删除的未跟踪的文件 |
git clean -fd -n |
查看要删除的未跟踪的文件/目录 |
git clean -xfd -n |
查看要删除的未跟踪的文件/目录 |