git 常用命令速查
文本假设你已经懂得git的基本原理,但还不太熟悉命令行使用,提供常用git命令的快速查询
基本配置
- 设置用户名:git config --global user.name [user]
- 设置邮箱:git config --global user.email [email]
- 永久保存帐号密码:git config --global credential.helper store
- 临时保存帐号密码:git config --global credential.helper cache
- 查看所有配置:git config --list
- 删除配置:git config --global --unset [config]
- 配置代理:git config [–global] http.proxy|https.proxy (不加–global时只对当前repo生效)
仓库操作
- 检出仓库:git clone [url]
- 同步远端仓库并merge:git pull [remote] [local]
- 同步远端仓库并rebase:git pull -r [remote] [local]
- 查看远端仓库:git remote -v
- 添加远端仓库:git remote add [name] [url]
- 删除远端仓库:git remote rm [name]
- 修改远端仓库:git remote set-url --push [name] [newURL]
差异比较
- 查看工作区状态:git status [-s] (-s使用精简方式显示)
- 对比工作空间和暂存区:git diff
- 对比工作空间和特定提交: git diff [commit]
- 对比暂存区和特定提交:git diff --staged [commit]
- 对比两次提交:git diff [commit1] [commit2]
查看日志
- 显示完整日志:git log
- 显示完整日志:git log --oneline
- 显示完整日志:git log --oneline --graph
- 查看分支拉出后的分支修改:git log [-p] master…[name]
- 查看分支拉出后的所有修改:git log [-p] master…[name]
- 每次修改的文件列表:git log --name-only
- 每次修改的文件列表和状态:git log --name-status
- 每次修改的文件列表和统计:git log --stat
- 每次修改的文件列表:git whatchanged
- 每次修改的文件列表和统计:git whatchanged --stat
- 显示最后一次提交:git show
- 显示最后n次提交:git show -n
- 显示指定提交的具体内容:git show [commit]
- 查看本地所有提交,包括已删除的:git reflog
文件操作
- 新增文件:git add [file]
- 删除文件:git rm [file]
- 移动、重命名文件:git mv [from] [to]
- 提交修改:git commit -m [log]
- 提交所有已修改未暂存文件:git commit -a -m [log]
文件回滚
-
回滚
未提交暂存区
的文件:- 单个文件:git checkout – [filename]
- 所有文件:git checkout .
-
回滚
已提交暂存区
文件- 单个文件:git reset HEAD [filename]
- 所有文件:git reset HEAD .
-
删除所有非版本库文件:git clean -dxf
-
删除版本库文件:git rm [file]
-
回滚暂存区文件:git reset HEAD [file]
-
回滚本地提交记录并保留修改:git reset [commit]
-
回滚本地提交记录,同时回滚本地文件:get reset --hard [commit]
分支操作
- 查看本地分支:git branch
- 查看远程分支:git branch -r
- 查看所有分支:git branch -a
- 创建本地分支:git branch [name]
- 切换分支:git checkout [name]
- 创建并切换到新分支:git checkout -b [name]
- 删除已合并分支:git branch -d [name]
- 强制删除分支:git branch -D [name]
- 创建远程分支:git push origin [local]:[remote]
- 删除远程分支:git push origin :[name]
代码合并
- 合并分支:git merge [branch]
- rebase分支:git rebase [branch]
- 撤销合并:git merge --abort
- 合并指定提交:git cherry-pick [commit]
特别说明:
- rebase master后相当于从最新主干拉出分支并进行了修改
- merge master后相当于把最新主干修改合并到分支并生成一个新的commit(和SVN的merge一样)
冲突处理
- 使用远程分支:git checkout --theirs [file]
- 使用当前分支:git checkout --ours [file]
子模块
- 初始化子模块:git submodule init
- 更新子模块:git submodule update
储藏操作(stashing)
- 保存已修改和在暂存区的文件:git stash
- 查看已储藏的信息:git stash list
- 应用储藏:git stash apply [stash@{n}]
- 应用并移除最近的储藏:git stash pop
LFS(Large File Storage)
- 安装lfs:brew|yum|apt-get install git-lfs
- 开启lfs功能:git lfs install
- 查看现有的文件追踪模式:git lfs track
- 开启大文件追踪:git lfs track [file],需要提交gitattributes文件
- 显示已追踪的文件列表:git lfs ls-files