本篇主要是Git的安装及使用以及码云gitee的使用操作
如有不妥之处,欢迎大家交流学习
一、Git简介
-
Git是分布式版本控制系统,通俗简单来讲,Git可以自动记录每次文件的改动,有助于多端协作,自行管理
-
目前我们使用到的 Git 命令都是在本地执行,如果想通过 Git 分享你的代码或者与其他开发人员合需要将数据放到一台其他开发人员能够连接的服务器上,可以使用了Github 或Gitee作为远程仓库
-
分布式Git和集中式SVN的区别
描述 Git 本地有镜像,无网络时也可以提交到本地镜像,待到有网络时再push到服务器 SVN 无网络不可以提交, 和 Git 的主要区别是历史版本维护的位置
二、安装
-
Git下载 下载地址 根据自己的电脑选择需要的版本
-
Git安装 傻瓜式安装,一般都选择默认选项,具体的安装过程可参考这篇博文:安装过程
-
安装完成后需要对Git进行配置
注意:以下所有命令都是在Git Bash中运行,不是在cmd
# 配置所有Git仓库的 用户名 和 email $ git config --global user.name "yourname" $ git config --global user.email "youremail@example.com" # git config 命令的 --global 参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置, 当然也可以对某个仓库指定不同的用户名和Email地址(不加 --global)。
三、git本地各部分介绍
本地仓库:
-
工作区(Working Directory): 自己电脑里能看到的目录
-
版本库(Repository): 工作区有一个隐藏目录
.git
,这个不算工作区,而是Git的版本库。-
暂存区(stage 或 index):存放 修改了的还未提交到仓库的文件
-
Git为我们自动创建的第一个分支
master
,以及指向master
的一个指针叫HEAD
。
-
四、相关命令
$ git # 查看 git 的相关命令 (git --help)
$ git --version # 查看 git 的版本
$ git config # 查看 git config 的相关命令
$ cat <file> # 显示文件内容,如cat readme.txt 就是在git bash中显示该文件内容
下面详细介绍Git的命令并进行具体的演示操作
1. 初始化本地仓库
本地仓库可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪。
$ cd g:/Git # 选择某一位置创建仓库
$ mkdir test # mkdir 创建目录
$ cd test
$ pwd # pwd 用于显示当前目录
$ git init # 把当前目录初始化为 git 仓库
# 注意: Git命令必须在Git仓库目录内执行
此时,本地仓库已创建好,会在当前目录下看见 .git 目录,这个目录是Git跟踪管理仓库的,不可随意修改
2. 添加文件到仓库
第一步: git add 添加该文件到仓库,实际是把要提交的所有修改放到暂存区
第二步: git commit 提交该文件到仓库,实际是把暂存区的所有内容提交到当前分支
$ git add <file> 如: git add readme.txt
$ git commit -m "description" 如: git commit -m "add readme.txt"
# 注意:
# 1.添加许多同种类型的文件,采用 git add "*.txt" 命令,即添加所有 .txt 文件
# 2.description 为对本次提交的说明,可以是任意内容,主要是为第一步上传的文件添加一个备注,方便查找
# 3.可以多次 add 不同的文件,commit 可以一次提交多个文件
- 在上述步骤创建的text仓库中,编写一个 hello.txt 文件,然后按下图所示命令运行,命令成功后,出现
1 file changed
:1个文件被改动(新添加的hello.txt文件);2 insertions
:插入了两行内容(hello.txt有两行内容)
3. 查看仓库目前状态 (项目是否有修改、添加、未追踪的文件等)
$ git status
- 执行上述命令。运行结果如下图所示,表示当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的。
- 修改 hello.txt 文件内容,然后输入上述指令可以看到 如下所示的输出,输出表明 hello.txt 已被修改,但还没提交修改,这个命令不能查看修改的具体内容
4. 查看具体修改内容
$ git diff <file> # git diff hello.txt
执行命令,运行结果如上图所示,红色框表示在 hello.txt 文件中新修改的内容,在知道了修改内容后,可以放心地将其提交到仓库
5. 查看提交日志(每一次提交的版本记录)
$ git log
$ git log --oneline #美化输出信息,每个记录显示为一行,显示 commit_id 前几位数
$ git log --pretty=oneline #美化输出信息,每个记录显示为一行,显示完整的 commit_id
# 该命令显示从最近到最远的提交日志
# commit_id 为版本号,系统自动分配
# (HEAD -> master)表示当前版本,上一版本是HEAD^,上上一个版本是HEAD^^,往上100个版本是HEAD~100。
# 若无法退出,则在英文状态下输入q即退出
6. 版本回退
$ git reset --hard HEAD^ # 回退到上一版本
$ git reset --hard <commit_id> # 回退到 commit_id 对应的版本,只需要前几位就可
7. 查看命令历史
$ git reflog
# 假设依次提交了三个版本 a->b->c,然后昨天我们从版本 c 回退到了版本 b,今天我们又想要回到版本 c,此时就可以使用 reflog 命令来查找 c 版本的 commit_id,然后使用 reset 命令来进行版本回退
回退之前版本,用
git log
可以查看提交历史,以便确定要回退到哪个版本。重返未来版本,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本
8. 撤销修改
- 丢弃工作区的修改 (当改乱了工作区某个文件的内容,想直接丢弃工作区的修改)
$ git checkout -- <file> # git checkout -- hello.txt
$ git restore <file> # git restore hello.txt
# 上述两种方式都可以,都表示撤销撤销hello.txt文件在工作区的修改,将工作区回复成暂存区
- 丢弃暂存区的修改 (当不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改)
$ git restore --staged <file> # 第一步: 把暂存区的修改撤销掉(unstage),重新放回工作区
$ git restore <file> # 第二步: 撤销工作区的修改
- 当已经提交了不合适的修改到版本库时,想要撤销本次提交,参考 版本回退 一节,不过前提是没有推送到远程库。
9. 删除文件
当你想删除某个文件 git.txt 时,采用命令 rm git.txt
删除文件,执行此命令后出现两种情况:
-
第一种情况:确实要把 git.txt 文件删除,则继续执行
git rm git.txt
和git commit -m "remove git.txt"
, 则可以把删除时间在git中记录 -
第二种情况:删错文件了,不想删除 git.txt 文件了,此时若没有执行
git commit -m "remove git.txt"
命令,可以通过git checkout git.txt
将 git.txt 文件恢复;若执行了git commit -m "remove git.txt"
命令,则采用git reset --hard HEAD^
命令可以恢复。
五、远程仓库
本地仓库: 本机上某个存放代码的仓库。
远程仓库: 码云服务器上的代码仓库。
重要提醒: 当我们在本地操作(新增、删除、修改)文件、目录时,并将其提交(commit),只是提交到了本地仓库。注意:所有的改动只是放到了本地仓库,并没有上传到服务器的远程仓库。当将本地仓库与远程仓库关联起来后,即可将本地仓库中的对代码的改动上传到(push)远程仓库,也可从远程仓库将对代码的代码改动下载(pull)下来。
1. 创建SSH key
由于本地Git仓库和Gitee仓库之间的传输是通过SSH加密的,所以需要先进行如下设置:在Git Bash下输入如下指令,成功后在用户主目录下,寻找.ssh目录,并在这个目录下找id_rsa
和id_rsa.pub
这两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,用于后续步骤
$ ssh-keygen -t rsa -C "youremail@example.com"
2. 登录Gitee账号
没有Gitee账号的,可以去官网注册一个。注册登录后,在个人主页—>个人设置---->SSH公钥,将上述步骤中的 id_rsa.pub 里面的内容复制粘贴到 3 号位置,在2号位置任意添加一个标题即可。
3. 在Gitee中创建远程仓库
-
登录Gitee,点击右上角的 + 号,再点击新建仓库
-
填写仓库名称,下面的路径默认,是否开源根据自己的需要,然后按照图中所示勾选
4. 关联远程仓库(先有本地仓库)
有了远程仓库,再在本机上创建本地仓库,然后将两者关联起来
$ git remote add origin git@gitee.com:用户名/仓库名.git # 后面的地址换成自己的 Gitee 仓库地址
5. 将远程仓库克隆到本地仓库(先在gitee中有远程仓库)
4小节是先有本地库,后有远程库,然后关联远程库。
本小节是先创建远程库,然后,从远程库克隆,相比之下,这是较好的方式。
# HTTP方式
$ git clone https://gitee.com/gitee账号名/仓库名.git
# SSH方式
$ git clone git@gitee.com:/gitee账号名/仓库名.git
# 二者区别:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,但是每次fetch和push代码都需要输入账号和密码,这也是https方式的麻烦之处。而使用SSH url克隆却需要在克隆之前先配置和添加好SSH key,因此,如果你想要使用SSH url克隆的话,你必须是这个项目的拥有者。否则你是无法添加SSH key的,另外ssh默认是每次fetch和push代码都不需要输入账号和密码,如果你想要每次都输入账号密码才能进行fetch和push也可以另外进行设置
之后在本地仓库中对代码进行修改,然后可以推送到远程库
6. 推送到远程库
$ git push origin master # 本地修改代码之后,可以通过此命令将修改推送到远程库master分支
六、分支管理
$ git branch # 查看分支列表及当前分支
$ git branch dev # 创建 dev 分支
$ git switch dev = git checkout dev # 切换到 dev 分支
$ git switch -c dev = git checkout -b dev # 创建并切换到新的 dev 分支
$ git merge dev # 合并 dev 分支到当前分支
$ git branch -d dev # 删除 dev 分支
参考:
最后的最后,大家还是要多实践哦!!实践是锻炼技术最好的方式