Git通讲-第三章(1):常用指令及仓库分区
前言
本章开始,我会笼统的介绍一下git的一些常用指令,然后挑我感兴趣的一些指令进行详细解析和拓展。这章将不像前一章那样关注概念的理解,而是逐渐将重心转移到应用上去。
Git指令
Git的指令(命令)可以分为几种主要类型,每种类型针对不同的操作和功能,其实如果你一路看下来光看名字也能猜出个所以然,前面文章中也多多少少触及到了一些Git指令。以下是主要的几种类型指令:
1. 配置命令
git config
:设置Git的全局或本地配置。
2. 仓库命令
git init
:初始化新的Git仓库。git clone
:克隆远程仓库。
3. 文件操作命令
git add
:将更改添加到暂存区。git rm
:删除文件。git mv
:移动或重命名文件。
4. 提交命令
git commit
:提交更改。git commit --amend
:修改上一个提交。git commit -m "message"
:提交时直接添加提交信息。
5. 分支和合并命令
git branch
:管理分支。git checkout
:切换分支或恢复文件。git merge
:合并分支。git rebase
:变基操作,将当前分支的基础更改为另一个分支。
6. 版本历史命令
git log
:查看提交历史。- [[git diff]]:比较差异。
git show
:查看特定提交的详细信息。git blame
:查看每一行代码的最后提交信息。
7. 远程操作命令
git fetch
:获取远程更新。git pull
:获取并合并远程更新。git push
:将本地更改推送到远程。git remote
:管理远程仓库。
8. 标签命令
git tag
:创建和管理标签。
9. 恢复和重置命令
git reset
:重置当前分支。git checkout -- <file>
:恢复文件到上一个提交状态。git revert
:撤销某个提交的更改。git clean
:清理工作目录中的未跟踪文件。
10. 高级命令
git cherry-pick
:将特定提交应用到当前分支。git stash
:暂存当前的修改,清空工作区。git reflog
:查看引用日志,跟踪分支的历史移动。git bisect
:二分查找提交,帮助定位引入bug的提交。
11. [[Git子模块命令|子模块命令]]
git submodule
:管理Git子模块,允许在一个Git仓库中包含另一个仓库。
12. [[Git hook|钩子命令]]
- Git支持通过钩子脚本(如
pre-commit
、post-commit
)实现自动化操作。
小结
Git命令的类型和功能非常丰富,以上列举的命令涵盖了大部分常用的Git操作。根据不同的需求,开发者可以灵活运用这些命令来管理版本、协作开发和维护代码库。掌握这些命令将大大提高开发效率和代码管理能力。
本地仓库的三个分区
Git基础-CSDN博客👈这篇文章是在我初次尝试去学Git时所作,现在回头看文字稍显青涩、板板正正的,不像现在偶然会乱讲几句胡话。但其实还是干货满满的,值得一看。现在就对文中讲到的分区再重新讲解一下吧,但是具体的使用还是看我的那篇文章为好。
在Git的本地仓库中,有三个重要的“分区”,分别是 工作区(Working Directory)、暂存区(Staging Area,又称索引区),以及 本地仓库(Local Repository)。理解它们的关系和作用对掌握Git的操作非常关键。
1. 工作区(Working Directory)
- 定义:工作区是用户直接操作文件的区域,也就是项目文件所在的目录。用户在这里编辑、删除和新增文件,修改代码等。
- 作用:工作区中的文件状态可以分为“已修改”(Modified)和“未跟踪”(Untracked)。修改后的文件需要进入暂存区后才可以提交到本地仓库。
- 操作示例:在工作区中编辑文件后,文件会显示为“已修改”状态。这时可以使用
git status
命令查看哪些文件被修改或新增。
2. 暂存区(Staging Area)
- 定义:暂存区是一个缓存区,保存的是即将提交到本地仓库的文件快照。也可以理解为一个准备提交的文件清单,Git会在这里收集并标记所有即将进入下一个提交的更改。
- 作用:暂存区让用户可以在一次提交中选择性地包含文件。例如,可以一次性对多个文件做出不同的修改,但只提交其中的一部分。
- 操作示例:在工作区修改完文件后,用
git add <filename>
命令将文件从工作区添加到暂存区。使用git status
可以看到这些文件已处于暂存状态,等待提交。
3. 本地仓库(Local Repository)
- 定义:本地仓库是用户提交的所有历史记录的存储库,Git会将暂存区中的所有文件快照记录下来,以形成新的提交(commit)。
- 作用:本地仓库包含项目的完整版本历史,并且每个提交都会生成一个唯一的哈希值标识,从而保证版本的不可变性。所有已提交的内容都保存在本地仓库中,用户可以查看历史、回滚到旧版本,甚至恢复被删除的内容。
- 操作示例:当暂存区准备好后,使用
git commit -m "message"
将暂存区内容提交到本地仓库。提交后,暂存区清空,文件正式进入本地仓库的版本历史中。
这三个区域的工作流
一个典型的Git工作流程涉及以下步骤:
- 修改:在工作区中编辑文件,产生更改。
- 暂存:使用
git add
将修改的文件放入暂存区。 - 提交:使用
git commit
将暂存区中的更改提交到本地仓库。
图解关系
1 | 工作区 (Working Directory) ←→ 暂存区 (Staging Area) ←→ 本地仓库 (Local Repository) |
这三者之间的流动形成了Git的基本工作流,其中工作区用于修改代码,暂存区用于挑选要提交的内容,而本地仓库负责保存所有提交的历史版本。
总结
至于为什么要区分这三个区,我就简单的讲下,具体的可以自己找资料学,我个人认为主要是在版本回退(reset)中使用到:
git reset
的三种常用模式
reset
有三种主要的模式,对应着不同的作用范围:
git reset --soft
- 影响范围:只影响本地仓库,不影响暂存区或工作区。
- 效果:将提交记录向后回滚,但不更改暂存区或工作区的内容。这种模式下,文件状态保持暂存,适用于更改提交信息或重新组织提交历史。
- 用途示例:撤销最近的一次提交,合并多次提交为一次。
**
git reset --mixed
**(默认模式)- 影响范围:影响本地仓库和暂存区,但不影响工作区。
- 效果:将提交记录回滚,同时将暂存区内容取消暂存。工作区中的文件保持不变,仍然包含上一次提交的修改。
- 用途示例:想重新选择哪些文件暂存而不改变实际代码内容时。
git reset --hard
- 影响范围:影响本地仓库、暂存区和工作区。
- 效果:彻底回滚到指定提交点,将暂存区和工作区的文件全部恢复到该提交状态。任何未提交的更改都会丢失,因此需要谨慎使用。
- 用途示例:完全恢复到某个历史提交版本,清除所有未保存的更改。
当然还有像git checkout
、git restore
、git revert
、git stash
、git clean
这些涉及到[[与Git三个分区有关的指令]],但由于不是本章的目的,我就不具体讲解使用了,感兴趣或者要用到就自己去问GPT。
后记
这篇文章确实短,我也发现后面的内容也没有那么难懂了,只能说轻舟已过万重山
,之后大概也是这样,将一些具体实践上的事情一笔带过,让读者了解一下有些什么即可。我还是坚持实用至上,当真正用到的时候自然会会的,快速推进知识迭代打开知识面。