Bootstrap

Git常用命令

以下是常用Git命令大全的扩展和优化版本,以便更好地查阅和理解。


目录

  1. 初始化与配置
  2. 克隆与远程仓库管理
  3. 基本操作
  4. 分支管理
  5. 标签管理
  6. 查看与比较
  7. 撤销与重置
  8. 存储与恢复
  9. 高级操作
  10. Git别名与配置优化
  11. 常用技巧与最佳实践

1. 初始化与配置

1.1 初始化本地Git仓库
git init                # 初始化当前目录为Git仓库
git init [project-name] # 在指定目录创建Git仓库
git init --bare         # 创建一个裸仓库(不包含工作区)
1.2 配置用户信息
git config --global user.name "你的用户名"       # 配置全局用户名
git config --global user.email "你的邮箱@域名.com" # 配置全局用户邮箱
1.3 配置Git行为
git config --global color.ui true                # 启用彩色输出
git config --global core.editor vim              # 设置默认编辑器为Vim
git config --global merge.tool vimdiff          # 设置默认合并工具
git config --global alias.co checkout            # 创建别名:git co = git checkout
git config --global alias.br branch               # 创建别名:git br = git branch
git config --global alias.ci commit               # 创建别名:git ci = git commit
git config --global alias.st status               # 创建别名:git st = git status
1.4 查看和编辑配置
git config --list             # 显示所有配置
git config -e [--global]      # 编辑配置文件
git config --global --unset http.proxy # 移除Git的代理配置

2. 克隆与远程仓库管理

2.1 克隆远程仓库
git clone git+ssh://[email protected]/VT.git # 克隆远程仓库
git clone [url]                              # 克隆远程仓库到当前目录
git clone [url] [directory]                  # 克隆远程仓库到指定目录
2.2 添加远程仓库
git remote add origin [email protected]:用户名/仓库.git    # 添加名为origin的远程仓库
git remote add [shortname] [url]                       # 添加一个新的远程仓库并命名
2.3 查看远程仓库
git remote -v                # 显示所有远程仓库的URL
git remote show [remote]     # 显示指定远程仓库的详细信息
2.4 修改远程仓库
git remote set-url origin [email protected]:用户名/新仓库.git # 修改origin的URL
2.5 删除远程仓库
git remote rm origin          # 删除名为origin的远程仓库

3. 基本操作

3.1 查看状态
git status          # 查看当前版本状态(是否修改)
3.2 添加文件
git add xyz         # 添加xyz文件至index
git add .           # 添加当前目录下所有更改过的文件至index
git add -p          # 交互式选择添加部分更改
3.3 提交更改
git commit -m '提交信息'                  # 提交
git commit --amend -m '修改后的提交信息'   # 修改上一次提交
git commit -am '提交信息'                  # 添加并提交所有已跟踪文件的更改
3.4 删除文件
git rm xxx          # 删除index中的文件
git rm -r *         # 递归删除
git rm --cached [file] # 停止追踪指定文件,但保留在工作区
3.5 查看提交日志
git log             # 显示提交日志
git log -1          # 显示最近一次提交
git log -5          # 显示最近五次提交
git log --stat      # 显示提交日志及相关变动文件
git log -p -m       # 显示提交的详细差异
3.6 查看帮助
git --help          # 查看Git帮助
git help [command]  # 查看特定命令的帮助

4. 分支管理

4.1 查看分支
git branch                # 列出所有本地分支
git branch -a             # 列出所有分支,包括远程分支
git branch -r             # 列出所有远程分支
git branch --contains [commit] # 显示包含某次提交的分支
git branch --merged       # 显示所有已合并到当前分支的分支
git branch --no-merged    # 显示所有未合并到当前分支的分支
4.2 创建分支
git branch [branch-name]                        # 创建一个新的分支
git checkout -b [branch-name]                    # 创建并切换到新分支
git branch [branch] [commit]                     # 创建一个指向特定commit的新分支
git branch --track [branch] [remote/branch]      # 创建一个跟踪远程分支的新分支
4.3 切换分支
git checkout [branch-name]    # 切换到指定分支
git checkout -               # 切换到上一个分支
4.4 重命名分支
git branch -m [旧名称] [新名称]  # 重命名本地分支
4.5 删除分支
git branch -d [branch-name]    # 删除已合并的分支
git branch -D [branch-name]    # 强制删除分支
git push origin --delete [branch-name]  # 删除远程分支

5. 标签管理

5.1 查看标签
git tag                     # 列出所有标签
git tag -l "v1.*"           # 列出匹配模式的标签
5.2 创建标签
git tag [tag]               # 创建轻量标签
git tag -a [tag] -m "说明"   # 创建带注释的标签
git tag [tag] [commit]      # 在指定commit上创建标签
5.3 删除标签
git tag -d [tag]                             # 删除本地标签
git push origin --delete refs/tags/[tag]      # 删除远程标签
5.4 查看标签详情
git show [tag]               # 显示标签的详细信息
5.5 推送标签
git push origin [tag]         # 推送指定标签到远程仓库
git push origin --tags        # 推送所有本地标签到远程仓库

6. 查看与比较

6.1 查看差异
git diff                     # 显示工作目录和暂存区的差异
git diff --cached            # 显示暂存区和上一次提交的差异
git diff HEAD                # 显示工作目录和上一次提交的差异
git diff [branch1]...[branch2] # 比较两个分支之间的差异
git diff --stat              # 仅显示差异的文件统计信息
6.2 查看提交详情
git show [commit]            # 显示某次提交的详细内容
git show [commit]:[file]     # 显示某次提交时文件的内容
6.3 查看分支历史
git log --graph --oneline --all    # 图形化显示所有分支的提交历史
git log --pretty=format:'%h %s' --graph  # 自定义格式显示提交历史
6.4 搜索内容
git grep "delete from"                # 在文件中搜索特定文本
git grep -e '#define' --and -e SORT_DIRENT # 结合条件搜索

7. 撤销与重置

7.1 撤销更改
git checkout [file]                # 恢复暂存区的指定文件到工作区
git checkout [commit] [file]       # 恢复某个commit的指定文件
git checkout .                     # 恢复暂存区的所有文件到工作区
git reset [file]                   # 重置指定文件的暂存状态
7.2 重置分支
git reset [commit]                 # 重置当前分支的指针到指定commit,暂存区不变,工作区不变
git reset --soft [commit]          # 重置分支指针,保留暂存区和工作区的更改
git reset --mixed [commit]         # 默认选项,重置分支指针和暂存区,工作区不变
git reset --hard [commit]          # 重置分支指针、暂存区和工作区到指定commit
git reset --keep [commit]          # 重置HEAD为指定commit,但保持暂存区和工作区不变
7.3 撤销提交
git revert [commit]                # 创建一个新的提交,撤销指定commit的更改
git revert HEAD                    # 撤销最近一次提交

8. 存储与恢复

8.1 暂存与恢复更改
git stash                         # 暂存当前未提交的更改
git stash list                    # 查看所有stash
git stash show -p stash@{0}       # 查看指定stash的内容
git stash apply stash@{0}          # 应用指定的stash
git stash pop                     # 应用最近的stash并删除
git stash drop stash@{0}           # 删除指定的stash
8.2 备份与恢复数据
# 备份数据卷
docker run --rm -v data:/data -v $(pwd):/backup alpine tar czf /backup/data_backup.tar.gz /data

# 恢复数据卷
docker run --rm -v data:/data -v $(pwd):/backup alpine tar xzf /backup/data_backup.tar.gz -C /data

9. 高级操作

9.1 Git Rebase
git rebase [base-branch]          # 将当前分支的提交移到base-branch之上
git rebase -i [commit]            # 交互式rebase,修改提交历史
9.2 Git Bisect
git bisect start                   # 开始二分查找
git bisect bad [commit]            # 标记坏的提交
git bisect good [commit]           # 标记好的提交
# Git会自动切换到中间提交,测试后继续标记
git bisect reset                   # 结束二分查找,回到原始分支
9.3 Git Cherry-pick
git cherry-pick [commit]           # 将指定commit的更改应用到当前分支
9.4 Git Submodule
git submodule add [url] [path]      # 添加子模块
git submodule update --init        # 初始化子模块
git submodule foreach 'git pull'    # 更新所有子模块
9.5 Git Hooks
# 进入hooks目录
cd .git/hooks

# 编辑pre-commit钩子
vim pre-commit

# 添加可执行权限
chmod +x pre-commit

10. Git别名与配置优化

10.1 创建别名
git config --global alias.co checkout      # git co = git checkout
git config --global alias.br branch         # git br = git branch
git config --global alias.ci commit         # git ci = git commit
git config --global alias.st status         # git st = git status
git config --global alias.lg "log --graph --pretty=format:'%h %ad | %s%d [%an]' --date=short" # git lg = 自定义日志格式
10.2 优化配置
# 启用自动补全(需安装bash-completion)
echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc

# 设置颜色主题
git config --global color.ui true

11. 常用技巧与最佳实践

11.1 使用Git stash管理临时更改
git stash save "描述"          # 保存当前更改并附加描述
git stash apply stash@{n}      # 应用指定的stash
11.2 使用Git reflog恢复丢失的commit
git reflog                    # 查看所有HEAD的移动记录
git checkout [commit]         # 恢复到特定的commit
11.3 清理无用的对象
git gc                        # 垃圾回收,优化仓库
git prune                     # 删除无法到达的对象
git fsck                      # 检查仓库的完整性
11.4 使用Git blame追踪代码修改
git blame [file]              # 查看每一行的最后修改者和提交
11.5 使用Git bisect定位问题
git bisect start
git bisect bad                  # 当前版本有问题
git bisect good [commit]        # 指定一个已知好的提交
# 依次测试并标记
git bisect reset                 # 重置状态
11.6 管理大文件
git lfs install                # 安装Git LFS
git lfs track "*.psd"           # 跟踪特定类型的大文件
git add .gitattributes          # 添加LFS配置文件
11.7 保持提交历史整洁
  • 经常提交:避免一次性提交大量更改,保持每次提交逻辑清晰。
  • 编写有意义的提交信息:清晰描述每次提交的目的和内容。
  • 使用分支进行开发:在功能分支上开发,完成后合并到主分支,保持主分支稳定。

总结

这份常用Git命令大全涵盖了从初始化仓库、配置用户信息、基本操作到高级操作、别名设置以及常用技巧和最佳实践的各类Git命令和操作。掌握这些命令和技巧将极大提升在版本控制和代码管理方面的效率与能力。

:部分高级命令和操作需要更深入的理解和谨慎使用,尤其是涉及历史重写(如git reset --hardgit rebase等)。建议在执行这些操作前,备份重要数据或在安全的环境中进行测试。

;