Git新手教程(从0开始)
了解Git之前,首先我们要明白Git的作用是什么?
Git和Github的关系
工作区(Working Directory)
- 定义:工作区就是你在电脑上看到的项目文件夹,即你实际进行文件修改、编辑等操作的地方。例如,你创建了一个名为“my_project”的项目文件夹,在这个文件夹里对文件进行的任何操作,都是在工作区中进行的。
- 作用:提供一个直观的环境,让开发者能够像处理普通文件一样对项目文件进行操作,为开发者与版本控制系统之间提供了一个交互界面。
暂存区(Index/Stage)
- 定义:暂存区是一个临时区域,位于工作区和版本库之间。可以把它想象成一个中间过渡地带。当你在工作区修改了文件后,若想将这些修改提交到版本库,首先需要把文件添加到暂存区。例如,使用
git add
命令将文件添加到暂存区。 - 作用:通过暂存区,开发者可以灵活地将不同的修改组合成有意义的提交,使得版本历史更加清晰和有条理,方便对每次提交的内容进行精准控制。
版本库(Repository)
- 定义:版本库是Git用来存储项目历史记录和元数据的地方,它包含了项目的所有版本信息。版本库中最重要的部分是对象数据库(Object Database),它以一种高效的方式存储文件的不同版本以及相关的元数据。当你初始化一个新的Git仓库(使用
git init
命令)时,就会在项目目录下创建一个隐藏的.git
文件夹,这个文件夹就是版本库。 - 作用:保存项目的完整历史,方便回溯到项目的任何一个历史状态,同时支持多人协作开发时的版本同步和合并。
提交(Commit)
- 定义:提交是将暂存区的内容作为一个新的版本记录到版本库中的操作。每次提交都有一个唯一的哈希值(类似于
6f4922fbee793a8805c420c97311e799a8117994
)来标识,并且可以附带一条提交信息,用于描述本次提交所做的更改。使用git commit
命令来创建提交。 - 作用:标志着项目的一个稳定状态,为项目的发展记录下重要的里程碑,方便后续查看和追溯项目的变更历史。
分支(Branch)
- 定义:分支是一条独立的开发线路,它基于某个提交创建,拥有自己独立的历史记录。在Git中,默认的分支名为
master
(在Git 2.28及更高版本中,默认分支名可能是main
)。你可以创建新的分支,例如开发新功能时,为了不影响主分支的稳定性,可以创建一个新的功能分支进行开发。使用git branch
命令来创建、查看和管理分支。 - 作用:允许开发者在不影响主代码库的前提下,并行地进行不同功能的开发、试验新想法或修复问题,提高开发效率,降低风险,方便团队协作开发。
HEAD指针
- 定义:HEAD指针指向当前所在的分支的最新提交,表示当前的工作目录处于该提交的状态。它就像是一个书签,标记着你在版本历史中的当前位置。例如,当你切换分支时,HEAD指针也会相应地移动到新分支的最新提交上。
- 作用:明确当前工作目录所处的版本位置,使得Git能够知道基于哪个版本进行后续的操作,如继续提交新的更改、切换分支等。
这些是 Git 的常用命令及其用途的简要说明。Git 是一个分布式版本控制系统,广泛用于跟踪代码的变化和协作开发。以下是这些命令的详细解释:
1. Start a Working Area
clone
: 克隆一个远程仓库到本地,创建一个新的目录并将仓库的所有内容复制到该目录中。- 示例:
git clone https://github.com/user/repo.git
- 示例:
init
: 在当前目录初始化一个新的 Git 仓库,或者重新初始化一个已存在的仓库。- 示例:
git init
- 示例:
2. Work on the Current Change
add
: 将文件内容添加到暂存区(index),准备提交。- 示例:
git add file.txt
- 示例:
mv
: 移动或重命名文件、目录或符号链接。- 示例:
git mv oldfile.txt newfile.txt
- 示例:
restore
: 恢复工作区中的文件到某个状态(例如,撤销修改)。- 示例:
git restore file.txt
- 示例:
rm
: 从工作区和暂存区中删除文件。- 示例:
git rm file.txt
- 示例:
3. Examine the History and State
bisect
: 使用二分查找来定位引入 bug 的提交。- 示例:
git bisect start
- 示例:
diff
: 显示不同提交之间、提交与工作区之间的差异。- 示例:
git diff
- 示例:
grep
: 在工作区中搜索匹配指定模式的行。- 示例:
git grep "TODO"
- 示例:
log
: 显示提交历史。- 示例:
git log
- 示例:
show
: 显示某次提交的详细信息。- 示例:
git show commit_hash
- 示例:
status
: 显示工作区的状态(例如,哪些文件被修改、暂存等)。- 示例:
git status
- 示例:
4. Grow, Mark and Tweak Your Common History
branch
: 列出、创建或删除分支。- 示例:
git branch new-branch
- 示例:
commit
: 将暂存区的更改提交到仓库。- 示例:
git commit -m "Commit message"
- 示例:
merge
: 将两个或多个开发历史合并到一起。- 示例:
git merge branch-name
- 示例:
rebase
: 将当前分支的提交重新应用到另一个分支的顶部。- 示例:
git rebase main
- 示例:
reset
: 将当前分支的 HEAD 重置到指定的状态。- 示例:
git reset --hard commit_hash
- 示例:
switch
: 切换到另一个分支。- 示例:
git switch branch-name
- 示例:
tag
: 创建、列出、删除或验证一个 GPG 签名的标签。- 示例:
git tag v1.0
- 示例:
5. Collaborate
fetch
: 从远程仓库下载对象和引用。- 示例:
git fetch origin
- 示例:
pull
: 从远程仓库获取并合并到当前分支。- 示例:
git pull origin main
- 示例:
push
: 将本地分支的更新推送到远程仓库。- 示例:
git push origin branch-name
- 示例:
6. Additional Help
git help -a
: 列出所有可用的 Git 子命令。git help -g
: 列出一些常用的 Git 概念指南。
这些命令是 Git 的核心功能,掌握它们可以帮助你有效地管理代码版本和协作开发。如果你需要更详细的帮助,可以使用 git help <command>
来查看特定命令的详细文档。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Stone's Blog!
评论