【Linux】git操作

git操作

gitee为例

新建仓库并拉取到本地

在gitee上新建仓库后

我们点击这个橙色的克隆、下载

选择HTTPS的链接进行复制

我们创建一个test目录并cd进去

我们就可以把远端仓库拉取下来:

git clone后面带上刚才复制的链接

现在test目录下就有我们拉取下来的仓库了

但是我们感觉好像并没有看到仓库,ls -al才能看到

,git就是新建的仓库,叫做隐藏的本地仓库。

在网站上其实我们也看不到这个.git

tree一下发现.git里面包含的东西其实还挺多的。

这里面是我们历史上所有的修改记录。

我们不同版本的修改数据都会保存在git特定的目录下,一般是objects

其实我们的git在记录时,不需要记录不变的。

git只会提交变化的部分。

假如我们从100行里删了1行代码,git只需要记录删除了第99行这样的字符串。

如果未来我们想恢复,把"删除"改成"添加"这一行。


加进本地仓库

我们在拉取下来的目录merge_class_delete里创建一个文件test.c并在其中编写代码:

但是这个test.c是并没有在本地仓库管理起来的

git add .可以把当前目录下所有陌生的文件添加到本地仓库。

也可以git add test.c

git add test *

但这样还不算是完全添加到仓库里了

(我们要厘清当前工作区域.git的概念)

当我们add之后其实只是添加到了一个临时的暂存区里面:

那么这个暂存区的作用是什么呢?

这个暂存区允许我们多次添加,一次一起提交到git仓库。

多次add,一次提交。

第二个理由是暂存区可以恢复,后悔提交。

怎么看现在是什么状态呢?

git status

提交到本地仓库

git commit -m "......"

-m后面跟的是日志信息,或者说是提交日志信息。

这个信息建议不能乱写,要写本次提交做的核心工作。

因为git log就能看提交记录

这里的commit后面的是提交id。表示一种唯一值,相当于我们前面说的v1 v2 v3

将远端仓库与本地同步

git push

会要求我们输入gitee的用户名和密码

然后就可以看到

在gitee上面就能看到我们刚push的代码了,就完成了同步。

如果我们不小心删掉了本地仓库,此时就可以再次克隆远端仓库到本地了:

所以以上这就是git的三板斧

补充细节

1.git命令行安装

sudo yum install -y git(centos)

sudo apt install -y git(ubantu)

这样是说明已经装了

或者which git

2.git首次使用要求输入username,email

所以在git log后我们可以在Author这里后面看到用户名和邮箱

3.git提交只保存头、源文件

不保存临时文件,也就是只管理后缀为.h .cpp .c这些的文件。

所以在我们构建仓库时有个.gitignore

它就是用来做这个的,帮我们进行本地文件后缀过滤。

如果在这个配置信息里出现的后缀格式,在add commit push的时候都不会被提交。

vim .gitignore我们可以将其打开

这些配置信息里出现的后缀的文件既不会被远端仓库托管,也不会被本地仓库托管,只能算是linux环境下当前目录里的临时文件。

总之就是没有被git管理。

Windows与远端仓库

linux可以把远端仓库拉取下来,Windows上同样可以。

Windows上得装有git。

(也可以在Windows终端操作)

现在我们已经装有TortoiseGit

我们在点clone之前要先去复制我们要拉去的远端仓库的链接,然后再点clone,就会自动选中我们要的那个远端仓库。

拉取后就可以看到了。

如果现在我们在Windows里对test2.c进行修改

然后因为我们是修改这个文件而不是新建文件,所以我们直接commit

然后再push

现在我们的linux Windows 远端都有这个相同的仓库了

而刚才Windows用户修改了代码但Linux用户并不知道,在写自己的代码然后想进行上传,因为add和commit是在本地做的所以暂且还不会报错

git push之后就会报错了

rejected

那么怎么办呢?

git pull,将本地的仓库与远端的进行一次同步

cat test2.c我们就能看到Windows用户做了的修改

刚才我们是在add和commit之后因为没同步没push成功的,现在git pull完之后我们不需要重复做add和commit,直接git push就可以。

since我们的linux用户写了个新的代码并同步到了远端,现在我们的Windows用户也出现了无法直接上传的状况。地位对等地,我们也需要先将本地仓库与远端仓库进行一次同步,然后才能再上传自己的代码。

远端仓库相比较于任何人,都是最新的。

实际操作中即使在同一个仓库也要在不同的目录下,这样冲突合并的成本最低。

可以在管理里进行仓库的删除。

对于目录,也可以进行这样的管理,操作都是一样的。

相关推荐
冻感糕人~几秒前
Agent框架协议“三部曲”:MCP、A2A与AG-UI的协同演进
java·人工智能·学习·语言模型·大模型·agent·大模型学习
b***91021 分钟前
在linux(Centos)中Mysql的端口修改保姆级教程
linux·mysql·centos
WMX101221 分钟前
Origin学习记录
学习
shizhan_cloud25 分钟前
Linux 交换空间管理
linux·运维
YouEmbedded28 分钟前
解码死锁的产生与解决
linux·避免死锁·死锁产生·预防死锁·处理死锁
果子没有六分钟1 小时前
【Linux】进程调度器
linux·运维·服务器
ghie90901 小时前
在Linux中设定账户密码的安全性
linux·运维·服务器
d111111111d1 小时前
MPU6050简介(学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习
两个人的幸福online1 小时前
cocos 的笔记(不定期完善)
笔记
赖small强3 小时前
【Linux驱动开发】Linux SDIO 底层原理与实现细节详解
linux·驱动开发·sdio