2020-08-29
Git 常用命令以及使用情况
1. 配置 Git
配置全局用户
1
2$ git config --global user.name "用户名"
$ git config --global user.email "git账号"配置别名 (非必要)
1
2
3
4
5$ git config --global co checkout
$ git config --global ss status
$ git config --global cm commit
$ git config --global br branch
$ git config --global rg reflog删除全局配置
1
2$ git config --global --unset (别名配置)
$ git config --global --unset user.xxx
2. 查看 Git 信息
查看系统配置
1
$ git config --list
查看用户配置
1
$ cat ~/.gitconfig
查看当前项目的 git 配置
1
$ cat .git/config
查看暂存区文件
1
$ git ls-files
查看本地 git 命令历史
(显示的是一个 HEAD 指向发生改变的时间列表,
在切换分支、
git commit
提交、git reset
撤销 commit时 HEAD 指向改变,可以使用git reset --head 02b5293
恢复在
git checkout -- <filename>
撤销、git stash
存储文件时 HEAD 不会改变,这些修改也没有被提交,不可恢复git reflog 会被定期清理)
1
$ git reflog
查看所有 git 命令
1
$ git --help -a
查看当前 HERD 指向
1
$ cat .git/HEAD
git 查看多页文件时, D 向下翻一行, F 向下翻页, B 向上翻页, Q 退出
git 查看提交历史
- git 中一条分支就是一个指针,新建一条分支就是基于当前指针新建一个指针
- 切换分支 : 将HEAD指向某条分支 (指针)
- 切换至某个 commit : 将 HEAD 指向某个 commit
git log --graph
图形化符号含义*
: 一次 commit|
: 分支前进/
: 分叉\
: 分之合入|/
: 新分支1
2
3
4
5
6
7
8
9
10
11
12
13$ git log --online --> 将 commit 记录 逐行显示
--grep="关键字" --> 查找 commit 提交注释 中与关键字有关的记录
--graph --> 记录图形化显示
--all --> 将所有记录详细显示出来
--author "username" --> 查找此作者的提交记录
--reverse --> 将 commit 提交记录倒序显示
-num --> 显示最近 num 次提交 git log -10
-p --> 显示每次提交引入的差异 (按 补丁 的格式输出)
--before = 1 day/1 week/1 "2020-08-29" --> 查找规定时间之前的记录 (一天, 一周)
--after = "2020-8-23" --> 查找规定时间之后的操作
--stat --> 显示每次更新的文件修改信息统计,会列出具体文件列表
--abbrev-commit --> 仅显示 SHA-1 的前几个字符,而非所有 40 个字符
--pretty=format:"xxx" --> 可以定制要显示的记录格式
3. Git 常用命令
查看工作区和暂存区的状态
1
$ git status
add
将工作区的文件提交到暂存区commit
将暂存区文件提交到本地仓库将暂存区的文件提交到本地仓库并添加提交说明
1
$ git commit -m "本次提交说明"
跳过验证继续提交
1
2$ git commit --no-verify
$ git commit -nadd 和 commit 合并,便捷写法 (未追踪的文件无法提交)
1
$ git commit -am "本次提交说明"
编辑器会弹出上一次提交的信息,可以在这里修改提交信息 (既可以修改上次提交的文件内容,也可以修改上次提交的说明)
如果暂存区有内容,这个新的 commit 会把任何修改内容和上一个 commit 的内容结合起来。如果暂存区没有内容,那么这个操作就只会把上次的 commit 消息重写一遍。[永远不要修复一个已经推送到公共仓库中的提交,会拒绝推送到仓库]
1
$ git commit --amend
修复提交,同时修改提交信息
1
$ git commit --amend -m "本次提交说明"
加入 –no-edit 标记会修复提交但不修改提交信息,编辑器不会弹出上一次提交的信息
1
git commit --amend --no-edit
将本地分支与远程分支关联
1
$ git push -u origin BranchName
将本地仓库文件推送到远程分支,如果远程仓库没有这个分支,会新建一个同名远程分支,省略分支名代表两者同名 (分支推送顺序 [<来源地> : <目的地>])
1
2$ git push <远程主机名> <本地分支名>:<远程分支名>
$ git push origin BranchName省略本地分支名,表示删除指定的远程分支 <==> 推送一个空的本地分支到远程分支
1
2
3$ git push origin :master
<==>
$ git push origin --delete master不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机
1
$ git push --all origin
建立当前分支和远程分支的追踪关系 (如果当前分支与远程分支之间存在追踪关系, 推送时则可以省略分支和 -u)
1
2
3
4# 不存在追踪
$ git push -u origin master
# 存在 追踪
$ git push如果远程主机的版本比本地版本更新,推送时 Git 会报错,要求先在本地做 git pull 合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用 –-force 选项 (尽量避免使用)
1
$ git push --force origin | git push -f origin
拉取远程分支的代码到本地镜像仓库
1
$ git pull
合并分支
查看本地分支
1
2
3$ git branch
<==>
$ git branch -l查看本地分支对应的远程分支
1
$ git branch -vv
查看远程分支
1
$ git branch -r
查看所有分支 (包括本地分支与远程分支)
1
$ git branch -a
新建分支,在别的分支下新建一个分支,新分支会复制当前分支的内容,(注意:如果当前分支有修改,但是没有提交到仓库,此时修改的内容是不会被复制到新分支的)
1
$ git branch BranchName
切换分支 (切换分支时,本地工作区,仓库都会相应切换到对应分支的内容)
1
$ git checkout BranchName
删除本地分支,会阻止删除包含未合并并更改的分支
1
$ git branch -d BranchName
修改当前分支名
1
$ git branch -m BranchName
临时将工作区文件修改保存至堆栈,用于后续恢复当前工作区内容 (以便于新建一个分支进行操作而不被当前分支影响)
如果文件没有提交到暂存区[(使用 git add . 追踪新的文件)],使用该命令会提示 No local changes to save ,无法将修改保存到堆栈中
diff
查看工作区和暂存区单个文件的对比
1
$ git diff filename
查看工作区和暂存区所有文件的对比
1
$ git diff
查看工作区和暂存区所有文件的对比,并显示出所有有差异的文件列表
1
2
3
4$ git diff --stat
# 1.你修改了某个文件,但是没有提交到暂存区,这时候会有对比的内容
# 一旦提交到暂存区,就不会有对比的内容(因为暂存区已经更新)
# 2.如果你新建了一个文件,但是没有提交到暂存区,这时候 diff 是没有结果的查看远程分支和本地分支的对比
1
$ git diff origin/branchname..branchname
查看两个本地分支所有的对比
1
$ git diff branchname..branchname
remote