Useful git commands
Posted on 20/11/2019Git Commands
Concepts
-
HEAD: 指向一个命名的分支,分支则指向最新的commit,当该分支有新的提交时,分支会更新到最新的commit,同时HEAD也会指向最新的commit。
-
detached HEAD:HEAD不是指向一个命名的分支,而是指向某个commit,可以在这种状态下进行编辑、提交,但是这些提交会在git的垃圾处理过程中丢失,如果要保留这些提交,需要创建一个新的分支。
-
进入detached HEAD模式:
$ git checkout 43cbcc7 # 43cbcc7代表某个commit
-
退出detached HEAD模式:
$ git checkout experimental # experimental代表分支名称
-
help
-
获得log命令的帮助
$ git help log
-
显示当前项目的所有配置信息
$ git config --list
-
配置个人信息
$ git config --global user.name "my name" $ git config --global user.email "my email address" $ git config -e [--global] #通过编辑器配置
创建、提交
-
初始化git新项目
$ cd myapp $ git init
-
在myapp编辑文件后,将其提交到index区
$ git add . # 将工作目录所有的修改文件提交到index中 $ git add file1 file2 # 将工作目录所有文件提交到index中
-
提交commit
$ git commit -m 'commit msg' $ git commit -a #可以省略前面的add步骤
Exploring history
-
显示commit历史
$ git log
-
显示历史,同时输出完整的修改记录
$ git log -p
-
显示commit的大体历史信息
$ git log --stat --summary
-
版本、分支提交、合并信息
$ git log --all --graph --oneline --decorate
-
单行显示最近3次提交
$ git log -3 --pretty --oneline
-
显示HEAD~3 到HEAD之间修改过文件
$ git log --name-only HEAD~3 HEAD
-
显示tag1到tag2之间的commits
$ git log tag1..tag2
-
显示某个commit修改过的文件名称
# 显示2ea5dcb修改文件列表 $ git show --name-only 2ea5dcb # 显示2ea5dcb修改文件及其状态列表 $ git show --name-status 2ea5dcb
manage branches
-
显示分支
$ git branch #显示本地分支 $ git branch -r #显示远程分支 $ git branch -a #显示本地+远程分支
-
创建分支experimental
$ git branch experimental
-
切换到experimental分支
$ git branch switch experimental
-
删除experimental分支
$ git branch -d experimental
tag
-
显示所有tag
$ git tag
-
创建tag
$ git tag tag_name commit
-
删除tag
$ git tag -d tag_name
协作开发
-
克隆项目
$ git clone https://github.com/spring-projects/spring-framework.git