Git 命令大全:全面详解
Git 是目前最流行的分布式版本控制系统,被广泛应用于软件开发中。无论是个人项目还是团队协作,掌握 Git 命令可以帮助你更有效地管理代码版本和协作开发。本文将详细介绍常用的 Git 命令,涵盖从基础操作到高级使用场景。
一、Git 基础命令
1. 初始化仓库
git init
用于在当前目录下初始化一个新的 Git 仓库。
git init
git clone <repository>
从远程仓库克隆一个项目到本地。
git clone https://github.com/user/repository.git
2. 配置 Git 用户信息
git config --global user.name "Your Name"
设置全局用户名。
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
设置全局用户邮箱。
git config --global user.email "your.email@example.com"
git config --list
查看所有配置。
git config --list
3. 查看仓库状态
git status
查看当前仓库的状态,显示有哪些文件发生了变化、哪些文件需要提交。
git status
4. 添加文件到暂存区
git add <file>
添加指定文件到暂存区。
git add README.md
git add .
添加当前目录下的所有变化到暂存区。
git add .
5. 提交更改
git commit -m "commit message"
提交暂存区中的更改,并添加提交信息。
git commit -m "Initial commit"
git commit -a -m "commit message"
将所有已跟踪的文件的更改提交(包括未暂存的变化),并添加提交信息。
git commit -a -m "Updated files"
6. 查看提交历史
git log
显示提交历史的日志信息。
git log
git log --oneline --graph
以图形化方式显示简洁的提交历史。
git log --oneline --graph
二、分支管理
1. 创建和切换分支
git branch <branch-name>
创建新分支。
git branch feature-branch
git checkout <branch-name>
切换到指定分支。
git checkout feature-branch
git checkout -b <branch-name>
创建并切换到新分支。
git checkout -b new-feature
2. 合并分支
git merge <branch-name>
将指定分支的内容合并到当前分支。
git merge feature-branch
3. 删除分支
git branch -d <branch-name>
删除本地分支。如果分支未被合并,Git 会阻止删除操作。
git branch -d feature-branch
git branch -D <branch-name>
强制删除本地分支,无论是否合并。
git branch -D feature-branch
4. 查看分支
git branch
查看本地分支列表,当前分支会标有 *
。
git branch
git branch -a
查看本地和远程的所有分支。
git branch -a
三、远程仓库操作
1. 查看远程仓库
git remote
查看配置的远程仓库。
git remote
git remote -v
查看远程仓库的详细信息,包括 fetch
和 push
的 URL。
git remote -v
2. 添加远程仓库
git remote add <name> <url>
添加一个新的远程仓库。
git remote add origin https://github.com/user/repository.git
3. 推送到远程仓库
git push <remote> <branch>
将本地分支推送到远程仓库。
git push origin main
git push -u <remote> <branch>
推送并设置默认上游分支,以后可以直接用 git push
推送。
git push -u origin main
4. 拉取远程仓库的变化
git pull <remote>
拉取远程仓库的最新变化并合并到当前分支。
git pull origin main
git fetch <remote>
从远程仓库拉取最新的变化但不合并。
git fetch origin
四、标签管理
1. 创建标签
git tag <tag-name>
为当前分支的最新提交创建一个标签。
git tag v1.0.0
git tag -a <tag-name> -m "message"
创建带有注释的标签。
git tag -a v1.0.0 -m "Initial release"
2. 查看标签
git tag
查看所有标签。
git tag
git show <tag-name>
查看指定标签的详细信息。
git show v1.0.0
3. 推送标签到远程仓库
git push <remote> <tag-name>
将指定标签推送到远程仓库。
git push origin v1.0.0
推送所有标签到远程仓库。
git push --tags
4. 删除标签
git tag -d <tag-name>
删除本地标签。
git tag -d v1.0.0
git push <remote> --delete <tag-name>
删除远程仓库的标签。
git push origin --delete v1.0.0
五、查看与比较
1. 查看提交差异
git diff
查看工作区与暂存区之间的差异。
git diff
git diff --staged
查看暂存区与最后一次提交之间的差异。
git diff --staged
git diff <branch1>..<branch2>
比较两个分支之间的差异。
git diff main..feature-branch
2. 查看文件历史
git log <file>
查看指定文件的提交历史。
git log README.md
git blame <file>
查看文件每一行的提交者和修改时间。
git blame README.md
3. 撤销操作
git checkout -- <file>
撤销工作区中对指定文件的更改。
git checkout -- README.md
git reset HEAD <file>
取消暂存区中的更改。
git reset HEAD README.md
git revert <commit>
还原指定提交,并生成一个新的提交。
git revert 123abc
git reset --hard <commit>
将当前分支重置到指定提交,同时重置工作区和暂存区的状态。
git reset --hard 123abc
六、暂存与恢复
1. 暂存修改
git stash
暂存当前工作区的修改。
git stash
git stash save "message"
使用描述信息暂存修改。
git stash save "WIP: unfinished work"
2. 查看和恢复暂存
git stash list
查看暂存列表。
git stash list
git stash apply
应用最近一次暂存的内容。
git stash apply
git stash pop
应用最近一次暂存的内容并删除该暂存。
git stash pop
git stash drop <stash>
删除指定的暂存。
git stash drop stash@{0}
七、Git 高级命令
1. 修改最后一次提交
git commit --amend
修改最后一次提交的提交信息或追加更改。
git commit --amend -m "Updated commit message"
2. Rebase 操作
git rebase <branch>
将当前分支的提交应用到指定分支的基础之上。
git rebase main
git rebase -i <commit>
交互式 rebase,可以合并、重排、删除历史提交。
git rebase -i HEAD~3
3. Cherry-pick 操作
git cherry-pick <commit>
将指定提交的更改应用到当前分支。
git cherry-pick 123abc
4. 变基冲突解决
git rebase --continue
继续进行 rebase,通常在解决冲突后使用。
git rebase --continue
git rebase --abort
取消当前的 rebase 操作,恢复到 rebase 前的状态。
git rebase --abort
八、Git 与 GitHub 协作
1. 生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
生成 SSH 密钥,用于与 GitHub 进行安全通信。
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
2. 添加远程仓库 URL
git remote set-url origin <new-url>
修改现有远程仓库的 URL。
git remote set-url origin git@github.com:user/repository.git
3. Fork 和 Pull Request
Fork 项目
在 GitHub 上 Fork 你想要参与的项目。
git remote add upstream <url>
为 Fork 的仓库添加上游仓库。
git remote add upstream https://github.com/original/repository.git
git fetch upstream
获取上游仓库的最新更改。
git fetch upstream
git merge upstream/main
将上游仓库的更改合并到本地分支。
git merge upstream/main
Pull Request
在 GitHub 上发起 Pull Request,提交你对原始项目的贡献。
九、总结
掌握 Git 命令是开发人员必备的技能之一,从项目初始化、分支管理、远程协作到高级操作,Git 提供了丰富的工具来帮助开发者高效管理代码。本文介绍的命令只是 Git 功能的一部分,通过不断实践和探索,你将能够更灵活地运用 Git 进行版本控制和团队协作。