Git 是一个分布式版本控制系统,用于跟踪计算机文件的更改,并协调多个用户之间的工作。下面是一份较为详细的 Git 命令大全,涵盖了从初始化仓库到日常使用中常见的操作。
1. 初始化与配置
- 设置用户信息:
git config --global user.name "Your Name"
: 设置全局用户名。git config --global user.email "your.email@example.com"
: 设置全局邮箱。- 若要为特定仓库设置不同的信息,可以在仓库目录下运行上述命令而不带
--global
参数。
- 初始化仓库:
git init
: 在当前目录创建一个新的 Git 仓库。git clone <repository>
: 克隆一个远程仓库到本地指定路径。例如:git clone https://github.com/user/repo.git
2. 工作区、暂存区和提交
- 添加文件至暂存区:
git add .
: 添加所有修改过的文件到暂存区。git add <file>
: 只添加指定文件。
- 提交更改:
git commit -m "commit message"
: 提交暂存区的内容,并附上说明。git commit --amend
: 修改最近一次提交的信息或内容(可以加入新的文件)。
- 撤销操作:
git reset HEAD <file>
: 将文件从暂存区移回工作区,但保留改动。git checkout -- <file>
: 放弃对文件的所有未提交修改。git clean -f
: 删除未被追踪的文件和目录(谨慎使用-f
标志)。
3. 分支管理
- 创建分支:
git branch <branch-name>
: 创建新分支但不切换过去。git checkout -b <branch-name>
或者git switch -c <branch-name>
: 创建并立即切换到新分支。
- 切换分支:
git checkout <branch-name>
或git switch <branch-name>
.
- 合并分支:
git merge <branch-to-merge>
: 将指定分支合并到当前分支。
- 删除分支:
git branch -d <branch-name>
: 安全删除已完全合并的分支。git branch -D <branch-name>
: 强制删除分支,即使它没有被合并。
4. 查看状态与历史
- 查看状态:
git status
: 显示工作目录中哪些文件被修改了,哪些文件在暂存区等。
- 查看日志:
git log
: 显示提交记录,默认显示所有分支的提交。git log --oneline --graph --all --decorate
: 以简洁格式展示带有图形的历史记录。
- 差异比较:
git diff
: 比较工作区与暂存区的差异。git diff --cached
: 比较暂存区与最新提交的差异。git diff <commit1> <commit2>
: 比较两个提交之间的差异。
5. 远程仓库
- 添加远程仓库:
git remote add origin <url>
: 添加名为origin
的远程仓库。
- 获取更新:
git fetch origin
: 获取远程仓库的最新信息,但不自动合并到本地分支。
- 拉取更新:
git pull origin master
: 从远程仓库拉取最新的代码并尝试合并到当前分支。
- 推送更改:
git push origin master
: 推送本地master
分支到远程仓库。git push -u origin <new-branch>
: 首次推送新分支时使用-u
参数建立跟踪关系。
- 查看远程仓库:
git remote -v
: 列出所有配置的远程仓库及其 URL。
- 删除远程仓库链接:
git remote remove origin
: 移除名为origin
的远程仓库链接。
6. 标签
- 创建标签:
git tag <tagname>
: 对最新提交打标签。git tag -a <tagname> -m "msg"
: 创建带注释的标签。
- 查看标签:
git show <tagname>
: 显示指定标签的详细信息。
- 推送标签:
git push origin <tagname>
: 推送单个标签到远程仓库。git push origin --tags
: 推送所有标签到远程仓库。
- 删除标签:
git tag -d <tagname>
: 删除本地标签。git push origin :refs/tags/<tagname>
: 删除远程标签。
7. 高级特性
- 变基:
git rebase <branch>
: 将当前分支的提交重新应用到另一分支之上。
- 选择性应用提交:
git cherry-pick <commit>
: 应用其他分支上的某个特定提交。
- 二分查找问题:
git bisect start
: 开始二分查找过程。git bisect bad <commit>
: 标记某提交引入了错误。git bisect good <commit>
: 标记某提交是好的。git bisect reset
: 结束二分查找过程。
- 恢复丢失的工作:
git reflog
: 记录了HEAD指针的变化,可用于恢复丢失的提交。git fsck --lost-found
: 查找孤立的对象,可能包含丢失的数据。