当前位置:   article > 正文

Git操作指南_git 操作

git 操作

下文按照使用时的流程进行记录。
远程库使用Gitee。

如果想省时间,直接看最后的案例,快速操作。

参考文章:公众号《Mculover666》的文章,我这里只是方便我自己用。

1. 本地库基础操作

1.1. 初始化本地库

方法一:任选一个文件夹初始化一个本地仓库

  1. 创建一个空白文件夹作为仓库文件夹;
  2. 打开文件夹,在文件夹中右键,点击Git Bash Here
  3. 在操作框中输入git init命令;并自动弹出初始化完成提示;
  4. Git会在当前文件夹自动创建一个.git文件夹(隐藏的),需要点击查看隐藏文件才看得到。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方法二:克隆一个现有仓库到本地

针对已经有远端仓库在运行,需要对其进行修改或者添加的情况。

比如,先在Gitee创建一个库,只有readme文件。
在这里插入图片描述

  1. 电脑任意位置,比如这里直接在桌面,点击右键,点击Git Bash Here
  2. 在操作框中输入如下指令git clone <远端库链接>
  3. Git会自动把远端库以一个文件夹的形式给你拉取到你右键位置的路径,文件夹名字就是你的远端库名字。

远端库链接从这里直接点复制,不要去浏览器顶端复制。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.2. 提交更新到本地库

个人理解:
.git文件夹中保存了你的版本信息、提交记录等内容。
在对本地库中的文件做出修改之后,只是更新了你库文件夹中的内容,但是git并没有记录你做了更改(总不能你每改一个字符,git就自动刷新记录吧),因此需要把你的更新内容提交到本地库,这样git才会记录下你的更改,实现版本控制。

1.2.1. 文件状态查询

文件状态有两种:

  1. 已跟踪。比如上文的 readme文件,它在上一次提交或者更新中已经有记录了,也就是说已经进入版本控制管理目录中了。
  2. 未跟踪。除了上面的都是。比如你在初始化之后,你往文件夹中新添加了几个文件,此时还没有提交到本地库,git版本管理目录中没有你这几个文件。这几个文件就是未跟踪状态。

查看状态
首先,cd到库文件夹;然后,输入git status命令,查看所有文件的状态。

在这里插入图片描述
然后手动在文件夹中添加一个test1.txt文件,再次执行git status命令。
在这里插入图片描述
如果觉得提示太长,可以在后面加上参数-s,如上图。

输出格式:(一共两个字符位置)

格式意义
左边一个M文件被修改,已放进暂存区
右边一个M文件被修改,未放进暂存区
MM在工作区被修改后,提交到暂存区,在工作区又被修改了
A新添加到暂存区的文件
??新添加未跟踪的文件

1.2.2. 跟踪新文件

修改之后要对新添加的文件添加跟踪。

使用git add <文件名 or 目录>命令。

支持通配符,比如.c表示追踪所有c文件
如果是目录,则追踪整个目录
可以用-A参数,直接跟踪所有文件

在这里插入图片描述

1.2.3. 暂存已修改文件

打开test1.txt文件任意修改一下,然后再次查看状态。
在这里插入图片描述
Changes not staged for commit表示:文件修改了,但是没有保存在暂存区。
再次调用git add <文件名 or 目录>命令将文件保存到暂存区。
在这里插入图片描述

1.2.4. 文件对比

git status命令:可以看到 被修改了但是没有暂存 的文件有哪些。

git diff命令,可以看到 被修改了但是没有暂存 的文件做了哪些修改。

git diff --staged命令,可以看到 已经被暂存的文件内容有哪些。

想要测试的,在 test1.txt 文件中再做个修改,比如添加一行,改一行之类的,然后输入三个指令试一下。
我觉得我目前大概率用不着,先不试了。

1.2.5. 忽略文件

针对不需要纳入版本管理的文件,可以在工作目录下创建一个名为.gitignore的文件来列出忽略文件的模式。

暂且先不用

1.2.6. 提交更新

使用git commit -m "<提交信息>"命令,把暂存区内容提交到本地库。

提交之前,要先确保所有文件都已经保存到暂存区了。

在这里插入图片描述
在这里插入图片描述
都次提交到本地库,就相当于一个版本(Linux中说的快照),以后可以把你的库回退到这个版本。

如果觉得麻烦,不想先保存在暂存区,然后再提交,可以跳过暂存区域直接提交。使用git commit -a -m "<提交信息>"命令可以跳过暂存区,直接将工作区修改的文件(未追踪的文件不能直接提交)添加到仓库。

1.3. 移除文件

有两种情况。

  1. 从暂存区删除,并且从工作目录删除源文件。
git rm <文件名>
  • 1
  1. 从暂存区删除,保留工作区的源文件:
git rm --cached <文件名>
  • 1

在这里插入图片描述
删除之后,文件夹里的文件也就没了。

2. 本地库进阶操作

2.1. 查看提交历史

我们每次执行git commit命令,都会提交一个版本(快照),我们可以通过git log命令查看提交历史。
在这里插入图片描述
可以看到,有三次提交历史,上面的是最新的。
每次的信息包括:

  1. SHA-1校验和;
  2. 提交的作者信息;
  3. 提交时间;
  4. 提交时填写的说明信息。

另外,当提交记录比较多的时候,可以使用一些参数,控制输出的内容。

选项说明
-p按补丁格式显示每个更新之间的差异。
–stat显示每次更新的文件修改统计信息。
–shortstat只显示 --stat 中最后的行数修改添加移除统计。
–name-only仅在提交信息后显示已修改的文件清单。
–name-status显示新增、修改、删除的文件清单。
–abbrev-commit仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
–relative-date使用较短的相对时间显示 (比如,“2 weeks ago”)。
-graph显示 ASCII 图形表示的分支合并历史。
–pretty使用其他格式显示历史提交信息。可用的选项包括 oneline,shou,full,fuller,format (后跟指定格式)

2.2. 版本回退与前进

实际上,Git的版本控制是 其维护了一个指针,Git版本前进回退的本质是移动HEAD指针的指向。

可以看上一张图的,最新版本后面有个 Hard --> master
其指向最新的版本

使用git reset --hard <索引值>命令进行版本回退/前进
在这里插入图片描述
这样就可以回退到上次提交的状态了,文件夹里又出现了已经删掉的文件。

索引值,就是查看版本时,验证码的前7位,也可以用git log --oneline命令,直接看到索引值。

再次回到最新的版本(版本前进),文件夹中的文件又消失了。
在这里插入图片描述
另外,reset后面跟的参数也有其他的。

参数说明
–soft仅仅移动本地库HEAD指针
–mixed移动本地库HEAD指针,重置暂存区
–hard移动本地库HEAD指针,重置暂存区,重置工作区

3. 本地库高级操作

3.1. 分支管理

针对建立的一个任务,可以多个人同时进行开发。每个人将现有的工程复制一份,在其基础上开发,最后再进行合成。这里每个人引出的开发路线就是一条Git分支

在前面的内容中,master就是我们的主分支名。

  1. 创建分支git branch <分支名称>
  2. 查看分支git branch -v
  3. 切换分支git checkout <分支名>

在这里插入图片描述
切换分支之后也可以进行Git的基本操作。
这里在工作区添加一个新文件test2.txt,然后执行下述操作。
在这里插入图片描述

3.2. 分支合并

这里想把更改之后的extra_1master分支进行合并,需要先切换到master分支,然后执行git merge <待合并的分支名称>命令。
在这里插入图片描述
当合并的分支对同一个文件的同一个地方有不同的修改时,会产生冲突,会提示自动合并失败,进入手动合并模式。修改完成之后,再次添加到暂存区、提交更新。

4. 远程库基础操作

为了方便多人协同,可以将本地库的文件放到远程库。代码托管中心就是用来维护远程库的。

  • 在局域网环境下,可以在公有的服务器上使用Gitlab搭建一个代码托管中心;
  • 在外网环境下,可以使用Github或者码云这样的第三方代码托管中心。

这里还是使用 码云。

后续的操作,为了方便,我们删除原有的文件夹,新建一个重来。
当然直接还在原有的这个文件夹 pull 也是可以的,他会更新.git文件夹中的版本信息,同时拉取这个文件夹中没有的远程库中的文件。

4.1. 拉取

想要把本地库推送到远程库,需要保证本地库是在远程库现有的版本上做的修改,如果不是需要先把本地库与远程库同步,也就是把远程库的拿过来,修改之后才能提交。

使用git pull <远程库地址名> <远程分支名称>命令进行拉取(这里远程库没有创建分支,只有一个master,所以就省略了)。
在这里插入图片描述

4.2. 推送

拉取完成之后,在文件夹中添加一个新文件data.txt

然后执行git push <远程库地址名> <远程分支名称>命令,将本地库推送到远程库(注意要先把工作区内容提交到本地库)。
在这里插入图片描述

如果弹出身份验证提示,按提示进行就可以了。

这个时候打开远程库看看,就有了我们添加的文件了。
在这里插入图片描述

4.3. 克隆

在初始化本地库的时候,其实已经说过了。

命令:git clone <远程库url>

相比于拉取操作,

  1. 将远程仓库的所有内容克隆到本地(避免了拉取操作);
  2. 默认创建了origin作为远程仓库地址的别名(避免了取别名的操作);
  3. 初始化了本地库(避免了初始化操作);

起别名命令:git remote add <别名> <远程库地址>
以后在需要填地址的时候,可以直接用别名代替


5. 远程库协作、PR贡献代码

到这其实已经满足绝大多数个人开发者的使用了。

后续还有:邀请远程库协作者、使用PR贡献代码。

这部分需要有两个账号进行操作,就先不加进去了,等我有用到的时候过来加。


案例:CubeMX代码库维护

在我的Gitee主页维护一个代码库,用于保存我的一些基础代码工程,方便以后复制使用。

其实可以直接在网页把代码放进去的,但是每次只能添加最多20个文件,一个工程里面有很多个文件,不方便。而使用Git没有这个限制。

如果把一个工程打成压缩包放进去的话,每个文件最大10M,就很难受。同样的GIt没有这个限制。

第一步,创建一个远程库,命名为CubeMX
在这里插入图片描述
第二步,把远程库拉取到本地。
直接在桌面右键,点击Git bash here,打开命令窗口。
输入git clone https://gitee.com/HzoZi/cube-mx.git命令,拉取远程库。
在这里插入图片描述
此时,桌面会多了个cube-mx文件夹,这就是我们的拉取过来的本地库文件夹了。

第三步,把需要上传的文件放到这个文件夹里面。
在这里插入图片描述

第四步,追踪(暂存)新添加的文件。
在这里插入图片描述

第五步,提交到本地库。
执行git commit -m "操作信息"命令,把工作区内容提交到本地库。
在这里插入图片描述
第六步,推送到远程库。
执行git push https://gitee.com/HzoZi/cube-mx.git命令,即可将本地库文件推送到远程库。
在这里插入图片描述
完成之后,去Gitee刷新一下, 即可看到推送过去的文件。

Over!!!


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/949348
推荐阅读
相关标签
  

闽ICP备14008679号