玩转 Git 就这么简单!这些常用命令你确定都用过吗?,java 多线程编程面试题
Git 常用命令:提交与修改
=================
git add
===========
添加文件到仓库
git add [file1] [file2] # 添加文件 file1 和 file2 进入暂存区
git add [dir] # 添加 dir 目录进入暂存区,包括子目录
git add . # 添加当前目录下所有文件到暂存区
$ touch README.md
$ git add README.md
git status
==============
查看在你上次提交之后是否有对文件进行再次修改。
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
通常使用-s 获得简短的输出结果。
$ git status -s
A README.md # A 表示新添加
git diff
============
比较文件在暂存区和工作区的差异,主要应用场景
git diff [file] # 尚未缓存的改动
git diff --chached [file] # 查看已缓存的改动
git diff --stat [file] #显示摘要而非整个 diff
前置条件:已经将 README.md 加入到暂存区。
vim README.md # 编辑 modified by summerday
$ git status -s
AM README.md
$ git diff # 显示暂存区和工作区的差异
diff --git a/README.md b/README.md
index e69de29..4dc8994 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+modified by summerday!
$ git diff --cached README.md # 显示暂存区和上一次提交(commit)的差异
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e69de29
$ git diff --stat README.md #显示摘要而非整个 diff
README.md | 1 +
1 file changed, 1 insertion(+)
git commit
==============
将暂存区内容添加到本地仓库中。
git commit -m [message]
git commit [file1] [file2] -m [message]
git commit -am [message]
add + commit
git revert <commit> # 撤销指定的修改
$ git commit -m "first commit !"
[master (root-commit) b81d562] first commit !
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
$ git status
On branch master
nothing to commit, working tree clean
nothing to commit, working tree clean,表示我们在最近一次提交之后,没有做任何改动,是干净的工作目录。
可以使用-a 选项跳过 git add。
$ vim README.md # add : modified again!
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
$ git commit -am "modify and commit again!"
[master 4c3121a] modify and commit again!
1 file changed, 1 insertion(+)
git reset
=============
回退版本,可以指定退回某一次提交的版本
git reset [--soft | --mixed | --hard] [HEAD]
--mixed?为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
git reset [HEAD]
git reset --mixed [HEAD]
$ git reset HEAD # 取消之前 git add 添加到暂存区的内容
$ git reset HEAD^ # 回退所有内容到上一版本 git reset HEAD~1
$ git reset HEAD^ 1.txt # 回退 1.txt 文件的版本到上一版本
$ git reset [version] # 回退到指定版本
--soft,--mixed,--head 的区别可以对照:git reset soft,hard,mixed 之区别深解,总结如下:git reset 命令是用来将当前 branch 重置到另外一个 commit 的,而这个动作可能会将 index 以及 work tree 同样影响,而三个参数表示影响程度上的不同:
--soft:仅仅将头指针恢复,【已经 add 进暂存区的内容以及工作空间的所有东西都不变】。--mixed:将头指针恢复,已经 add 进暂存区的内容也会丢失,【工作空间的代码什么的是不变的,可以根据情况再次进行 add,commit 操作】。--hard:一切就全都恢复了,头指针恢复,已经 add 进暂存区的内容也会丢失,代码什么的也恢复到以前状态,所以该参数需谨慎使用。
HEAD 说明
==========
^表示数字表示含义 HEADHEAD~0 当前版本 HEAD^HEAD~1 上一版本 HEAD^^HEAD~2 上上个版本
git rm
==========
删除文件
git rm <file> # 从暂存区和工作区中删除文件
git rm -f <file> # 如果删除之前修改过,并已经放到暂存区中,需要强制删除
git rm -cached <file> # 把文件从暂存区移除,但仍然希望保留在当前工作目录中
git mv
==========
移动或重命名工作区文件
git mv [file] [newfile] # 移动或重命名一个文件、目录或软链接
git mv -f [file] [newfile] # 如果新文件名已经存在,强制使用-f
Git 常用命令:日志信息
================
git log
===========
查看历史提交记录
$ git log
commit bcc72cf028fa25cd8cebf7e310ebfe18d848d9e3 (HEAD -> master)
Author: xxx
Date: Mon Nov 30 14:40:24 2020 +0800
update
commit 272df45cb2357655f07576bc59bd92aac9c9fe96
Author: xxx
Date: Mon Nov 30 12:50:22 2020 +0800
first commit !
$ git log --oneline # 查看简洁版本
bcc72cf (HEAD -> master) update
272df45 first commit !
b81d562 first commit !
$ git log --graph # 显示拓扑图结构,显示何时工作分叉、又何时归并。
$ git log --reverse --oneline # 逆向显示
$ git log --author=summerday --oneline -5 # 查看最近 5 行作者为 summerday 的提交记录
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges # 三周前且在四月十八日之后的所有提交 --no-merges 选项以隐藏合并提交
git blame
=============
查看文件的修改记录
$ git blame README.md
272df45c (huayuhao 2020-11-30 12:50:22 +0800 1) modified by summerday!
bcc72cf0 (huayuhao 2020-11-30 14:40:24 +0800 2)
bcc72cf0 (huayuhao 2020-11-30 14:40:24 +0800 3) reset test!
git show
============
显示信息
git show [version] # 显示某个提交的详细内容
git show HEAD # 显示 HEAD 提交日志
git show HEAD^ # 显示 HEAD 的父(上一个版本)的提交日志
Git 常用命令:远程操作
================
git remote
评论