Git常见用法

[TOC]

常见命令行

  • 查看git配置:
命令行 解释
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(要配置的用户邮箱)" 全局配置邮箱
  • init:初始化
命令行 解释
git init 初始化本地git项目
  • status:状态码
命令行 解释
git status 查看缓存与当前工作目录的状态
git status -s 查看缓存与当前工作目录的状态,简短输出结果
-s返回的状态码 解释
A 本地新增的文件,服务器上没有
C 文件的一个拷贝
D 本地的删除,服务器上还在
M 文件的内容或者mode被修改了
R 文件名被修改了
T 文件的类型被修改了
U 文件没有被合并(需要合并后才能进行提交)
X 未知状态(可能是遇到了git的bug)
未被git进行管理,可以使用git add Xxx添加进git然后能够被git管理
  • add:添加文件
命令行 解释
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(要查看的某个文件的路径) 查看某个文件的修改内容
  • commit:记录缓存内容的快照
命令行 解释
git commit -m "描述内容" 在add之后,将修改的文件添加到暂存区
git commit -a -m "描述内容" 不需要add,直接在这个命令行执行add操作,并将修改的文件添加到暂存区
  • reset:取消
命令行 解释
git reset HEAD -- xxx(带有完整路径的文件) 取消缓存已缓存的内容
git reset --hard commitIdXxx(提交的某次commitId) 回退版本到某次提交
git reset --hard HEAD^ 会退版本到上一次提交

  实际的操作是将该文件在“索引”中的校验和重置为最近一次提交中的值,git add 会计算一个文件的校验和,将它添加到“索引”中,而 git reset HEAD -- xxx 将它改写回原先的,从而取消缓存操作。

  • rm:删除
命令行 解释
git rm --cached xxx(带有完整路径的文件) 取消缓存已缓存的内容,同git reset HEAD -- xxx
git rm -f xxx(带有完整路径的文件) 取消缓存已缓存的内容,并且从磁盘中删除该文件
  • branch和checkout:分支
命令行 解释
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,显示的分支中就有一个分支的前面有,标明了当前分支;

  • merge:合并
命令行 解释
git merge xxx(分支名字) 将xxx分支合并到当前分支中
git merge --abort 取消合并操作,回退到合并之前
  • log:日志
命令行 解释
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 显示新增、修改、删除的文件清单
  • show:显示
命令行 解释
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 创建一个带注解的标签
  • fetch/pull:从远端服务器更新数据
命令行 解释
git fetch 从远端服务器下载新的分支和数据(就是与远程仓库同步)
git pull 从远端服务器提取新数据(相当于git fetch之后git merge)
git pull origin retomeXxx:localXxx 从远端服务器拉取分支到本地的分支;

其中,git pull origin这个是固定写法,后面remoteXxx是远程分支的名字,localXxx是本地分支的名字;

  • push:推送数据到远程仓库
命令行 解释
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分支
  • remote:操作远端仓库
命令行 解释
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 查看当前仓库的远程地址
  • clean:删除未跟踪的文件
命令行 解释
git clean -f 删除未跟踪的文件
git clean -fd 删除未跟踪的文件/目录
git clean -xfd 连gitignore的未跟踪文件/目录也一起删除(这个命令要慎用)
git clean -f -n 查看要删除的未跟踪的文件
git clean -fd -n 查看要删除的未跟踪的文件/目录
git clean -xfd -n 查看要删除的未跟踪的文件/目录