Git 是一个开源的分布式版本控制系统,用于跟踪项目的变更。以下是一些常用的 Git 命令及其详解:
1、git init
:
- 用途:初始化一个新的本地 Git 仓库。
- 详解:在当前目录下创建一个
.git
子目录,用于存储 Git 仓库的元数据。
2、git clone <repo>
:
- 用途:克隆一个远程仓库到本地。
- 详解:拷贝一个 Git 仓库(包括其所有分支和提交历史)到本地计算机,以便你能在本地进行查看或修改。
3、git status
:
- 用途:查看工作区的状态。
- 详解:显示哪些文件已被修改、哪些文件尚未追踪(即新添加的文件),以及哪些文件已准备好提交到仓库。
4、git diff <filename>
:
- 用途:查看未暂存的变更。
- 详解:比较工作区文件与最后一次提交之间的差异,可以指定文件名来查看特定文件的变更。
5、git log
:
- 用途:查看提交历史。
- 详解:列出所有提交的历史记录,包括每次提交的哈希值、提交者、提交日期和提交信息。可以通过添加选项(如
--pretty=oneline
)来更改输出的格式。
6、git add <filename>
:
- 用途:将文件变更添加到暂存区。
- 详解:标记工作区中的文件,使其准备好提交到仓库。可以指定文件或目录名,或使用
.
来添加所有变更。
- git add -u [<路径>]: 把<路径>中所有跟踪(tracked)文件中被修改过或已删除文件的信息添加到索引库。它不会处理未跟踪(untracked)的文件。省略<路径>表示:即当前目录。
- git add -a [<路径>]: 表示把<路径>中所有跟踪(tracked)文件中被修改过或已删除文件和所未跟踪(untracked)的文件信息添加到索引库。省略<路径>表示:即当前目录。
- git add -i [<路径>]: 命令查看<路径>中被所有修改过或已删除文件但没有提交的文件。
7、git commit
:
- 用途:提交暂存区的变更到仓库。
- 详解:将暂存区的变更永久保存为新的提交。通常需要附带一条描述变更的提交信息。
- git commit -m "描述变更的提交信息" : 将修改从暂存区提交到本地版本库
8、git push
:
- 用途:将本地分支的变更推送到远程仓库。
- 详解:将本地仓库的提交推送到关联的远程仓库,以便与他人共享变更。
9、git pull
:
- 用途:从远程仓库拉取变更到本地。
- 详解:获取远程仓库的变更,并与本地仓库合并。通常用于同步本地仓库与远程仓库的状态。
10、git reset
:
- 用途:重置当前 HEAD 到指定状态。
- 详解:可以根据不同的参数来回退到指定的提交,丢弃之后的变更。例如,
git reset --hard <commit-id>
会回退到指定的提交,并丢弃该提交之后的所有变更。
11、git checkout
:
- 用途:切换分支或恢复工作区文件。
- 详解:可以用于切换到不同的分支,或者用于丢弃工作区的变更(回到最后一次提交的状态)。
12、git branch
:
- 用途:查看、创建或删除分支。
- 详解:不带参数时,列出所有本地分支。可以使用
-a
选项查看所有分支(包括远程分支),使用-D
选项删除分支。
13、git remote
:
- 用途:管理远程仓库的别名和 URL。
- 详解:用于查看、添加、删除或修改远程仓库的配置信息。
14、git stash:
- 用途:暂存当前工作区的修改。
- 详解:当你需要临时保存工作区的变更,以便切换到其他分支或处理其他任务时,可以使用
git stash
。这会将工作区的变更保存起来,让你能够保持一个干净的工作区。之后,你可以使用git stash pop
来恢复这些变更,或使用git stash list
查看所有暂存的变更。
15、git rebase:
- 用途:重新应用一系列提交到一个新的基础提交上。
- 详解:
git rebase
用于将一个分支上的提交重新应用到另一个分支上。这通常用于保持一个线性的提交历史,避免合并提交。例如,git rebase master
会将当前分支上的提交重新应用到master
分支的最新提交上。你可以使用git rebase -i
来交互式地编辑提交历史,如合并多个提交或修改提交信息。
16、git cherry-pick:
- 用途:从一个分支中选择一个或多个提交,并将其应用到当前分支。
- 详解:
git cherry-pick
允许你从其他分支中选取特定的提交,并将其应用到当前分支上。这对于从一个分支复制特定的更改到另一个分支非常有用。你可以通过提交哈希值来指定要选取的提交。
17、git revert:
- 用途:撤销某个提交,但创建一个新的提交来实现撤销。
- 详解:与
git reset
不同,git revert
通过创建一个新的提交来撤销某个历史提交的效果。这意味着撤销操作本身是版本控制历史的一部分。这对于撤销公共仓库中的提交非常有用,因为它不会改变已有的提交历史。
18、git reflog:
- 用途:查看引用日志,包括 HEAD 和分支引用的变化历史。
- 详解:
git reflog
是一个用于查看 Git 引用(如分支和标签)变化历史的命令。它可以显示 HEAD 和其他引用的变化,包括由于git reset
、git checkout
等命令导致的变化。这对于找回由于误操作而丢失的提交非常有用。
19、git bisect:
- 用途:使用二分查找法找出引入某个问题的提交。
- 详解:当你需要找出引入某个特定问题或错误的提交时,可以使用
git bisect
。这个命令允许你通过二分查找的方式快速定位到引入问题的提交。你需要告诉 Git 哪个提交是好的(没有问题),哪个提交是坏的(有问题),然后 Git 会自动为你挑选中间的提交进行测试,直到找到问题的根源。 - 使用
git bisect start <bad> <good>
命令开始二分查找