以下是 Git 命令的详细示例,结合实际场景帮助你更好地理解和使用这些命令。
1. 初始化仓库
场景:你开始一个新项目,需要初始化一个 Git 仓库。
# 进入项目目录
cd my-project# 初始化 Git 仓库
git init
- 执行后,Git 会在当前目录创建一个
.git
文件夹,用于存储版本控制信息。
2. 克隆远程仓库
场景:你需要从 GitHub 克隆一个远程仓库到本地。
# 克隆远程仓库
git clone https://github.com/user/repo.git
- 克隆后,Git 会自动创建一个与远程仓库同名的目录,并将所有文件和历史记录下载到本地。
3. 查看状态
场景:你想知道当前工作目录和暂存区的状态。
# 查看状态
git status
- 输出示例:
On branch main Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: README.md Untracked files:(use "git add <file>..." to include in what will be committed)new-file.txt
4. 添加文件到暂存区
场景:你修改了 README.md
并创建了一个新文件 new-file.txt
,需要将它们添加到暂存区。
# 添加单个文件
git add README.md# 添加所有修改和未跟踪的文件
git add .
5. 提交更改
场景:你已将修改添加到暂存区,现在需要提交。
# 提交更改
git commit -m "Update README and add new file"
- 提交后,Git 会生成一个唯一的 SHA-1 哈希值(如
a1b2c3d
)来标识这次提交。
6. 查看提交历史
场景:你想查看项目的提交历史。
# 查看完整提交历史
git log# 查看简洁的提交历史
git log --oneline# 查看带有分支和合并历史的图形化提交历史
git log --graph
- 输出示例:
a1b2c3d (HEAD -> main) Update README and add new file e4f5g6h Initial commit
7. 创建和切换分支
场景:你需要创建一个新分支来开发新功能。
# 创建新分支
git branch feature-branch# 切换到新分支
git checkout feature-branch# 创建并切换到新分支(一步完成)
git checkout -b feature-branch
8. 合并分支
场景:你完成了 feature-branch
的开发,需要将其合并到 main
分支。
# 切换到 main 分支
git checkout main# 合并 feature-branch 到 main
git merge feature-branch
- 如果合并时有冲突,Git 会提示你解决冲突。
9. 拉取远程更新
场景:你需要从远程仓库拉取最新的更改。
# 拉取远程更新并合并到当前分支
git pull origin main
- 相当于
git fetch
+git merge
。
10. 推送本地更改
场景:你完成了本地开发,需要将更改推送到远程仓库。
# 推送当前分支到远程仓库
git push origin main# 推送新分支并设置上游分支
git push -u origin feature-branch
11. 查看差异
场景:你想查看工作目录和暂存区之间的差异。
# 查看工作目录和暂存区的差异
git diff# 查看暂存区和上次提交的差异
git diff --cached
12. 撤销更改
场景:你修改了 README.md
,但想撤销这些更改。
# 撤销工作目录中的修改
git checkout -- README.md# 将文件从暂存区移除,但保留工作目录中的修改
git reset HEAD README.md
13. 删除分支
场景:你不再需要 feature-branch
分支。
# 删除本地分支
git branch -d feature-branch# 强制删除未合并的分支
git branch -D feature-branch# 删除远程分支
git push origin --delete feature-branch
14. 标签管理
场景:你完成了版本 1.0.0 的开发,需要打一个标签。
# 创建轻量标签
git tag v1.0.0# 创建带注释的标签
git tag -a v1.0.0 -m "Release version 1.0.0"# 推送标签到远程仓库
git push origin v1.0.0
15. 暂存工作目录
场景:你正在开发一个功能,但需要切换到其他分支修复一个紧急问题。
# 暂存当前工作目录的修改
git stash# 恢复暂存的修改
git stash pop
16. 查看远程仓库
场景:你想查看当前配置的远程仓库。
# 查看远程仓库信息
git remote -v
- 输出示例:
origin https://github.com/user/repo.git (fetch) origin https://github.com/user/repo.git (push)
17. 重写提交历史
场景:你想整理提交历史,将多个提交合并为一个。
# 进入交互式 rebase 模式
git rebase -i HEAD~3
- 在编辑器中,将
pick
改为squash
或fixup
来合并提交。
18. 查看文件历史
场景:你想知道 README.md
文件的每一行是谁修改的。
# 查看文件的历史修改记录
git blame README.md
19. 子模块管理
场景:你需要在项目中嵌入另一个 Git 仓库。
# 添加子模块
git submodule add https://github.com/user/another-repo.git
20. 二分查找
场景:你想定位引入 bug 的提交。
# 开始二分查找
git bisect start# 标记当前提交为坏的
git bisect bad# 标记某个提交为好的
git bisect good a1b2c3d# 结束二分查找
git bisect reset
21. 查看引用日志
场景:你不小心删除了一个分支,想恢复它。
# 查看引用日志
git reflog# 恢复丢失的分支
git checkout -b recovered-branch a1b2c3d
22. 修改最后一次提交
场景:你提交后发现漏了一个文件。
# 添加遗漏的文件
git add missed-file.txt# 修改最后一次提交
git commit --amend
23. 查看远程分支
场景:你想查看远程仓库的所有分支。
# 查看远程分支
git branch -r
24. 删除远程分支
场景:你想删除远程仓库的 feature-branch
分支。
# 删除远程分支
git push origin --delete feature-branch
25. 查看文件状态
场景:你想查看暂存区中的所有文件。
# 查看暂存区中的文件
git ls-files
通过这些示例,你可以更深入地理解 Git 的使用场景和命令的具体作用。如果有其他问题,欢迎随时提问!
Git 是一个强大的分布式版本控制系统,广泛用于代码管理和协作开发。深入探索 Git 命令可以帮助你更好地理解其工作原理,并提高工作效率。以下是一些常用的 Git 命令及其深入解释:
1. 初始化仓库
git init
- 在当前目录初始化一个新的 Git 仓库。这会创建一个
.git
目录,用于存储所有的版本控制信息。
- 在当前目录初始化一个新的 Git 仓库。这会创建一个
2. 克隆仓库
git clone <repository-url>
- 克隆远程仓库到本地。这个命令会将远程仓库的所有历史记录、分支和标签都复制到本地。
3. 查看状态
git status
- 查看工作目录和暂存区的状态。它会显示哪些文件被修改、哪些文件已暂存、哪些文件未被跟踪等信息。
4. 添加文件到暂存区
git add <file>
- 将文件添加到暂存区(stage)。你可以使用
git add .
来添加所有修改过的文件。
- 将文件添加到暂存区(stage)。你可以使用
5. 提交更改
git commit -m "commit message"
- 将暂存区的更改提交到本地仓库。每次提交都会生成一个唯一的 SHA-1 哈希值,用于标识这次提交。
6. 查看提交历史
git log
- 查看提交历史。你可以使用
git log --oneline
来查看简洁的提交历史,或者git log --graph
来查看分支和合并的历史。
- 查看提交历史。你可以使用
7. 创建分支
git branch <branch-name>
- 创建一个新的分支。分支是 Git 中非常重要的概念,允许你在不同的开发线上并行工作。
8. 切换分支
git checkout <branch-name>
- 切换到指定的分支。你也可以使用
git checkout -b <branch-name>
来创建并切换到新分支。
- 切换到指定的分支。你也可以使用
9. 合并分支
git merge <branch-name>
- 将指定分支的更改合并到当前分支。合并时可能会产生冲突,需要手动解决。
10. 拉取远程更新
git pull
- 从远程仓库拉取更新并合并到当前分支。相当于
git fetch
和git merge
的组合。
- 从远程仓库拉取更新并合并到当前分支。相当于
11. 推送本地更改
git push
- 将本地分支的更改推送到远程仓库。你可以使用
git push -u origin <branch-name>
来设置上游分支。
- 将本地分支的更改推送到远程仓库。你可以使用
12. 查看差异
git diff
- 查看工作目录和暂存区之间的差异。你可以使用
git diff --cached
来查看暂存区和上次提交之间的差异。
- 查看工作目录和暂存区之间的差异。你可以使用
13. 撤销更改
git checkout -- <file>
- 撤销对文件的修改,恢复到上次提交的状态。
git reset HEAD <file>
- 将文件从暂存区移除,但保留工作目录中的修改。
14. 删除分支
git branch -d <branch-name>
- 删除指定的分支。如果分支还没有被合并,可以使用
git branch -D <branch-name>
强制删除。
- 删除指定的分支。如果分支还没有被合并,可以使用
15. 标签管理
git tag <tag-name>
- 创建一个轻量标签。你可以使用
git tag -a <tag-name> -m "tag message"
来创建带注释的标签。
- 创建一个轻量标签。你可以使用
git push --tags
- 将本地标签推送到远程仓库。
16. 暂存工作目录
git stash
- 将当前工作目录的修改暂存起来,方便你切换到其他分支。你可以使用
git stash pop
来恢复暂存的修改。
- 将当前工作目录的修改暂存起来,方便你切换到其他分支。你可以使用
17. 查看远程仓库
git remote -v
- 查看远程仓库的 URL。
18. 重写提交历史
git rebase <branch>
- 将当前分支的提交历史重新应用到指定分支上。
rebase
可以用于整理提交历史,但要注意它可能会改变提交的 SHA-1 哈希值。
- 将当前分支的提交历史重新应用到指定分支上。
19. 交互式 rebase
git rebase -i <commit>
- 进入交互式 rebase 模式,允许你编辑、合并、删除提交。
20. 查看文件历史
git blame <file>
- 查看文件的每一行是谁在什么时候修改的。
21. 子模块管理
git submodule add <repository-url>
- 添加一个子模块到当前仓库。子模块允许你在一个仓库中嵌入另一个仓库。
22. 清理未跟踪文件
git clean -f
- 删除工作目录中未跟踪的文件。你可以使用
git clean -fd
来删除未跟踪的目录。
- 删除工作目录中未跟踪的文件。你可以使用
23. 查看配置
git config --list
- 查看当前的 Git 配置。你可以使用
git config --global
来设置全局配置。
- 查看当前的 Git 配置。你可以使用
24. 别名
git config --global alias.<alias-name> <command>
- 为 Git 命令设置别名。例如,
git config --global alias.st status
可以将git st
作为git status
的别名。
- 为 Git 命令设置别名。例如,
25. 二分查找
git bisect
- 使用二分查找来定位引入 bug 的提交。你可以使用
git bisect start
开始查找,git bisect good
和git bisect bad
来标记好的和坏的提交。
- 使用二分查找来定位引入 bug 的提交。你可以使用
26. 查看引用日志
git reflog
- 查看引用日志,记录了你所有的 HEAD 和分支的移动历史。这在恢复丢失的提交时非常有用。
27. 修改最后一次提交
git commit --amend
- 修改最后一次提交。你可以使用这个命令来修改提交信息或者添加遗漏的文件。
28. 查看远程分支
git branch -r
- 查看远程仓库的所有分支。
29. 删除远程分支
git push origin --delete <branch-name>
- 删除远程仓库的指定分支。
30. 查看文件状态
git ls-files
- 查看当前暂存区中的所有文件。
31. 查看远程仓库信息
git remote show origin
- 查看远程仓库的详细信息,包括分支跟踪情况。
32. 重置到指定提交
git reset <commit>
- 将当前分支的 HEAD 重置到指定的提交。你可以使用
--soft
、--mixed
或--hard
选项来控制重置的行为。
- 将当前分支的 HEAD 重置到指定的提交。你可以使用
33. 查看文件内容
git show <commit>:<file>
- 查看指定提交中的文件内容。
34. 查看分支合并情况
git branch --merged
- 查看已经合并到当前分支的分支。
35. 查看未合并的分支
git branch --no-merged
- 查看尚未合并到当前分支的分支。
36. 查看远程仓库的标签
git ls-remote --tags origin
- 查看远程仓库的所有标签。
37. 查看文件的修改历史
git log -p <file>
- 查看指定文件的修改历史,并显示每次提交的差异。
38. 查看某个提交的详细信息
git show <commit>
- 查看指定提交的详细信息,包括提交信息、作者、日期和差异。
39. 查看某个文件的最后修改者
git log -1 -- <file>
- 查看指定文件的最后一次提交信息。
40. 查看某个提交的影响
git diff <commit>^!
- 查看指定提交与其父提交之间的差异。
41. 查看某个提交的父提交
git log --pretty=%P -n 1 <commit>
- 查看指定提交的父提交。
42. 查看某个提交的所有子提交
git log --pretty=%H --all --grep='^parent <commit>$'
- 查看指定提交的所有子提交。
43. 查看某个提交的树对象
git ls-tree <commit>
- 查看指定提交的树对象。
44. 查看某个提交的 blob 对象
git show <commit>:<file>
- 查看指定提交中的文件内容。
45. 查看某个提交的标签
git tag --contains <commit>
- 查看包含指定提交的标签。
46. 查看某个提交的分支
git branch --contains <commit>
- 查看包含指定提交的分支。
47. 查看某个提交的远程分支
git branch -r --contains <commit>
- 查看包含指定提交的远程分支。
48. 查看某个提交的本地分支
git branch --contains <commit>
- 查看包含指定提交的本地分支。
49. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
50. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
51. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
52. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
53. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
54. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
55. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
56. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
57. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
58. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
59. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
60. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
61. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
62. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
63. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
64. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
65. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
66. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
67. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
68. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
69. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
70. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
71. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
72. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
73. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
74. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
75. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
76. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
77. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
78. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
79. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
80. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
81. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
82. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
83. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
84. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
85. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
86. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
87. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
88. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
89. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
90. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
91. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
92. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
93. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
94. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
95. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
96. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
97. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
98. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
99. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
100. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
101. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程标签和分支。
102. 查看某个提交的所有本地引用
git show-ref --tags --heads
- 查看所有包含指定提交的本地标签和分支。
103. 查看某个提交的所有引用
git show-ref --tags --heads
- 查看所有包含指定提交的标签和分支。
104. 查看某个提交的所有远程引用
git ls-remote --tags --heads origin
- 查看所有包含指定提交的远程