工作中用到git
时,很多命令经常需要网上查找,浪费了大量时间。因此,决定写本文来收录常用的git
命令,方便工作速查,并会不但更新完善。
配置系列
-
git config
工具专门用来配置git
相应的工作环境变量,这些环境变量决定了git
在各个环节的工作方式和行为。-
git config --list
可以查看已有配置信息 - 配置用户名和邮箱:
git config --global user.name "someone" git config --global user.email "someone@company.com"
-
git config --system
修改配置文件[/etc/gitconfig
] -
git config --global
修改配置文件[~/.gitconfig
] - 配置优先级: [工作目录中的
.git/config
] > [~/.gitconfig
] > [/etc/gitconfig
]
-
- 配置
ssh
:git
可以通过https
和ssh
两种协议与远程仓库进行通讯。配置ssh
的基本思路是:本地生产ssh
密钥对--->在仓库端添加本地生产的public key
。- 本地生产
ssh
密钥对:ssh-keygen -t rsa
-
~/.ssh/id_rsa.pub
即为public key
- 本地生产
基本操作
-
git add
将工作区的文件添加到暂存区 -
git restore
撤销git
追踪过的文件的修改-
git restore --worktree/-W some_file
撤销文件在工作区的修改 -
git restore --staged/-S some_file
撤销文件在暂存区的修改,将状态恢复到add
之前 -
git restore -s commit_id some_file
将当前工作区切换到某一次commit
-
-
git clean
从工作目录中删除所有git
没有追踪过的文件-
git clean -n
演习,列出那些文件将被删除 -
git clean -df
删除当前目前下未被``git```追踪过的文件和文件夹
-
-
git reset [--soft | --mixed | --hard] commit_id
回退版本,--mixed
为默认选项-
git reset --hard commit_id
将仓库、暂存区和工作区均回退到某个版本
-
-
git checkout
实现git restore
和git switch
的功能-
git checkout some_branch
/git switch some_branch
切换分支 -
git checkout -b new_branch
/git switch -c new_branch
创建并切换分支
-
-
git commit
提交 -
git push
推送分支-
git push
推送到关联的远程分支 -
git push origin some_local_branch:some_remote_branch
推送到远程分支 -
git push origin :some_remote_branch
删除远程分支 -
git push origin --delete some_remote_branch
删除远程分支
-
-
git fetch
从远程仓库更新本地仓库 -
git rebase
变基-
git rebase some_branch
以some_branch
为基础执行变基 -
git add
解决rebase
冲突 -
git rebase --abort
终止变基 -
git rebase --continue
继续变基
-
-
git merge
分支合并-
git add
+git commit
解决merge
冲突
-
-
git pull
等同于git fetch
+git merge
-
git revert
撤销某次操作,并将撤销操作作为新的提交 -
git cherry-pick
挑选commit
进行合并-
git cherry-pick commit-id
挑选commit_id
进行合并 -
git add
解决cherry-pick
冲突 -
git cherry-pick --continue
继续合并 -
git cherry-pick --abort
放弃合并
-
-
git swich
切换分支-
git switch some_branch
切换分支 -
git switch -c new_branch
创建并切换分支
-
-
git log --oneline
单行显示提交记录 -
git status
查看git
工程当前状态 -
git diff
-
git diff commit_id
查看commit_id
的修改 -
git diff commit_id1 commit_id2
查看两次提交之间的差异 -
git diff --cached/--staged
查看暂存区和仓库之间的差异 -
git diff branch1 branch2
查看两分支之间的差异
-
-
git remote remove origin
移除源origin
-
git remote add origin https://*.git
增加源origin
分支管理
- 通过远程分支创建本地分支:
git checkout -b some_local_branch origin/some_remote_branch
- 通过当前分支创建分支:
git checkout -b some_branch
- 切换分支:
git checkout some_branch
- 合并分支:
git merge some_branch
- 变基分支:
git rebase some_branch
- 删除分支:
git branch -d some_branch
- 查看分支:
git branch
- 将本地分支与远程分支关联:
git branch --set-upstream-to=origin/some_remote_branch some_local_branch
- 推送分支:
git push origin some_local_branch:some_remote_branch
- 强推分支:
git push -f
冲突解决
-
git merge
冲突解决:git add
+git commit
-
git rebase
冲突解决:git add
+git rebase --continue
-
git cherry-pick
冲突解决:git add
+git cherry-pick --continue
修改commit
历史
- 修改当前
commit
的内容和message
:-
git commit --amend
将暂存区的内容合并到上一次提交,并可以修改message
-
- 修改历史commit:
-
git rebase -i commit_id
以commit_id
为基准执行交互式变基 - 修改历史commit里面文件
-
文件权限
- 查看文件权限:
git ls-files --stage some_file
- 修改文件权限:
git update-index --chmod=+x some_file
子模块
- 增加子模块:
git submodule add submodule_url
- 获取子模块:
- 方式一:
git clone mainmodule_url --recurse-submodules
- 方式二:在主项目中执行
git submodule init
+git submodule update
- 方式三:在主项目中执行
git submodule update --init --recursive
- 方式一:
- 更新子模块到
commit_id
:- 进入子模块并更新:
git fetch & git rebase & git reset --hard commit_id
- 推到主模块并提交:
git push
- 进入子模块并更新:
- 查看子模块:
git submodule