Git 常用命令参考手册
配置相关
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| git config -l
git config --local --list
git config --global --get user.name git config --global --get user.email
git config --global user.name "Vitan" git config --global user.email "example@example.com"
git config --local user.name "Vitan" git config --local user.email "example@example.com"
git config --unset --global user.name git config --unset --global user.email
git config --global core.editor emacs
git config --global merge.tool vimdiff
|
生成SSH_Key
1 2 3 4 5 6 7 8 9
| ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
> Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again]
|
最后需要将生成的 SSH Key 添加到 ssh config
中
1 2 3 4 5 6 7 8
| vim ~/.ssh/config
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
|
初始化仓库
git init
创建一个空的Git仓库或重新初始化一个现有的仓库
1 2 3 4 5 6 7 8
| git init
git init -q
git init --bare
|
文件状态
1 2 3 4 5 6 7 8
| git status
git status -s
git status --ignore-submodules
|
日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| git log
git log -2
git log -p -2
git log -S Java
git log --merges
git log --graph --oneline
git shortlog -sn
git shortlog -n
git shortlog -e
git blame README.md
|
克隆
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git clone https://github.com/ivitan/git.git
git clone git@github.com:ivitan/git.git
git clone -b master https://github.com/ivitan/git.git
git clone --recursive git@github.com:ivitan/git.git
git clone --depth=1 https://github.com/ivitan/git.git
|
分支管理
查看分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git branch -a
git branch
git branch -r
git branch -vv
git reflog show --date=iso master
|
切换分支
1 2 3 4 5 6 7 8 9
| git checkout master git switch master
git checkout -
git checkout -t origin/dev
|
创建分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| git branch develop
git checkout -b develop
git checkout -b develop git push origin develop
git checkout --orphan develop
git rm -rf .
git add -A && git commit -m "提交"
git push --set-upstream origin develop
|
删除分支
1 2 3 4 5
| git branch -d <branchName>
git push origin :<branchName>
|
重命名分支
1 2 3 4 5 6 7 8 9 10 11
|
git branch -m <branchName> git push origin :old_branch git push -u origin new_branch
git branch -m old_branch new_branch
|
代码合并
1 2 3 4 5 6 7 8 9 10 11 12
| git checkout develop git merge feature/v1.0.0
git merge feature/v1.0.0 develop
git merge develop -q
git merge develop --no-edit
|
暂存
1 2 3 4 5 6 7 8 9 10 11
| git add -A
git add ./README.md
git add .
git add 1.txt 2.txt ...
|
删除
git add 的反向操作
1 2 3 4 5 6 7 8
| git rm 1.txt
git rm -rf .
git rm -r --cached .
|
删除远程内容
1 2 3 4 5 6
| git rm -r -n --cached file/folder
git rm -r --cached file/folder
git commit -m "Comment" git push origin master
|
加上 -n
这个参数,执行命令时,不会删除任何文件,而是展示此命令要删除的文件列表预览。
提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git commit -m "changes log"
git commit README.md -m "message"
git commit -v
git commit --allow-empty-message
git commit --amend -m "新的提交信息"
|
推送
1 2 3 4 5 6 7 8 9 10 11
| git push -u origin master
git push origin <branchName>:<branchName>
git push
git push -f
|
拉取最新内容
1 2 3 4 5 6 7 8 9 10 11
| git fetch origin master
git pull
git pull origin master:master
git pull origin master
|
查看文件的改动
1 2 3 4 5 6 7 8 9 10 11 12
| git diff
git diff README.md
git diff d68a1ef2407283516e8e4cb675b434505e39dc54
git log README.md git show d68a1ef2407283516e8e4cb675b434505e39dc54 README.md
|
回滚版本
1 2 3 4 5 6 7 8 9 10 11
| git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard 'commit id'
git reflog
|
撤销
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git checkout -- .
git checkout -- README.md
git reset HEAD ./README.md
git reset <commit_id>
git reset --hard <commit_id>
|
标签
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| git tag
git ls-remote --tags origin
git tag -l "v1.0.0*"
git tag -a v1.1.0 -m "标签描述"
git tag v1.1.0
git log git tag -a v1.1.0 <commit_id>
git push origin v1.1.0
git push origin --tags
git tag -d v1.1.0
git push origin --delete v1.1.0
git checkout v1.1.0
git show v1.1.0
|
Rebase
git rebase
主要作用可以将多个commit记录合并为一条
1 2 3 4 5 6 7 8 9 10 11
| git rebase -i HEAD~4
git rebase -i e88835de905ad396f61a0dc8c040a8ac8a34f3f8
git rebase --abort
git rebase --continue
|
参考:git rebase将多次commit合并为一条
GitFlow
Git Flow 不是内置命令,需要单独安装
初始化
每个仓库都必须初始化一次
功能
1 2 3 4 5 6 7 8
| git flow feature start v1.1.0
git flow feature publish v1.1.0
git flow feature finish v1.1.0
|
打补丁
hotfix 是针对 master
进行打补丁的
1 2 3 4 5 6 7 8
| git flow hotfix start v1.1.0_hotifx
git flow hotfix publish v1.1.0_hotifx
git flow hotfix finish v1.1.0_hotifx
|
发布
1 2 3 4 5 6 7 8
| git flow release start v1.1.0
git flow release publish v1.1.0
git flow release finish v1.1.0
|
Git flow schema
子模块
具体使用还可以看这里 git submodule子模块使用教程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| git submodule add https://github.com/ivitan/git.git
git submodule update --remote
git pull
git submodule foreach -q --recursive 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
git submodule deinit <common>
git rm --cached common
git commit -am "Remove a submodule" && git push
|
帮助
1 2 3 4 5 6 7 8
| git help
git help -a
git help -c
|
清空commit历史
假设当前分支是 develop
1 2 3 4 5 6 7 8 9 10
| git checkout --orphan new_branch
git add -A && git commit -m "First commit"
git branch -D develop
git branch -m develop
git push -f origin develop
|
其他
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| git --version
git remote -v
git config --global credential.helper store
git credential-manager uninstall
git config --global credential.helper ""
git config --global --unset credential.helper
git rm -r --cached .
|
Git 思维导图
Via