前言
本篇博客介绍使用Git Bash命令行模式操作项目进行版本管理。除了Git专属命令外,其余的操作不出其右Linux命令。Git作为一个分布式版本管理系统(DVCS:Distrubuted Version Control System)诞生于2005年,给大家推荐一个Git重要参考资料《精通 Git》1,由就职于 GitHub 公司的 Scott ChaconB 执笔,是一部零基础的 Git 学习资料。
Git存在的意义在于:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
为什么使用命令行模式
Git 有多种使用方式。你可以使用原生的命令行模式,也可以使用 GUI 模式,这些 GUI 软件也能提供多种功能。在本篇博客中,我们将使用命令行模式。这是因为首先,只有在命令行模式下你才能执行Git的所有命令,而大多数的GUI软件只实现了Git所有功能的一个子集以降低操作难度。如果你学会了在命令行下如何操作,那么你在操作GUI软件时应该也不会遇到什么困难,但是,反之则不成立。此外,由于每个人的想法与侧重点不同,不同的人常常会安装不同的 GUI 软件,但所有人一定会有命令行工具。
步骤
1,新建仓库(repository)
在Git Bash窗口中输入以下命令,创建仓库文件夹repository2021,在这个文件夹下存储我们的项目工程文件(即工作树:work tree),这个时候仓库和Git还没有半毛钱关系。
mkdir repository2021
2,初始化仓库
进入仓库文件夹repository2021内进行仓库的初始化
cd repository2021
# 仓库初始化 git init # 查看仓库中的文件 ls -a
我们发现此时仓库文件夹repository2021中多了.git文件夹,而且在.git文件夹下多了很多的文件,这是Git在初始化仓库时自动创建的,此时Git与仓库文件夹repository2021有了半毛钱的联系。隶属于此仓库下的问价在将来都会被Git托管。
# 进入.git文件夹 cd .git # 查看.git文件夹下的文件 ls
3,查看仓库状态
git status
从返回结果上看,我们处于master分支,至今未进行提交操作,也没有任何东西能够提交。还提示我们创建或者复制文件并进行git添加操作。
4,新建READ.md文件
# 新建文件 touch READ.md
5,再次查看仓库状态
git status
从返回的结果来看,我们处于master分支,至今未进行提交操作,这两行结果和上次查看仓库状态相同。不同的是Git捕捉到了未进行追踪的文件READ.md,同时建议我们进行git添加操作。
6,跟踪文件
添加READ.md文件到仓库暂存区,以便后期的提交操作。暂存区指的是一个文件,保存了下次将提交的文件列表信息。有时候该文件也被称为索引Index。
git add READ.md git status
从返回的结果来看,我们处于master分支,至今未进行提交操作,这两行结果和上次查看仓库状态相同。不同的是Git提示我们说有可以被提交的改变。
7,提交文件
该步骤将暂存区的问件实际保存到仓库的历史记录中。
# -m表示<msg> git commit -m "第一次提交" git status
8,查看提交历史记录
git log
9,查看更改前后区别
# 查看工作树和暂存区的差别 git diff # 查看工作树和最新提交的差别 git diff HEAD
可以看出,此时的工作树(项目问件)和暂存区没有区别,因为已经进行了问件增加。
10,添加远程仓库
在Github上新建仓库,名为repository2021
执行git remote add命令,origin是git@github.com:zbkpointer/repository2021.git的别名,方便下一步的推送,不需要再写这么长的路径。
git remote add origin git@github.com:zbkpointer/repository2021.git
10.1,在推送至远程仓库前的环境准备
生成公钥和私钥、添加SSH
11,推送至远程仓库
git push -u origin master
执行完上述命令后,我们就可以在GitHub网页上查看是否将本地库的文件上传至GitHub上。经查看,我们看到我们创建的READ.md文件已经上传成功至GitHub。
12,获取最新的远程仓库分支
git pull origin master
13,删除远程仓库分支
在删除远程仓库main分支时,首先修改GitHub远程仓库默认分支为master,接着键入如下命令即可
git push origin --delete main