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://git hub.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
: 查找孤立的对象,可能包含丢失的数据。