C++ - git 命令行

为什么要有 git

你很可能遇到过这种情况,在写项目的时候,要我不符合 leader 的要求,因而修改了很多个版本,但是修改到最后一版的时候,leader 有觉得当前这版还没有之前 某一版好,现在又要求你在 之前的那一版上进行一些修改然后就提交;但是 , 对于leader需要的那一版的具体细节你也记得不是很清楚,也不好直接修改回去。

所以,你就在电脑当中创建了一个文件夹,里面存放的都是你修改过的代码不同版本的文件,我们把这个文件夹叫做本地仓库。这个本地仓库的使用者,就可对修改的不同版本的代码或者是其他文件 进行 版本隔离管理。

但是,这个项目你修改了这么多版本,怎么可能每一版都存储在在电脑当中,当这个项目很大,我们更不可能存储了。而且,在本地当中存储的 文件,很有可能会丢失,比如电脑损坏等等原因。

这时候,就有了 又有了服务器端,在服务器当中存储,我们把这种仓库称之为 远端仓库

所以,此时,就可以让用户选择,是否要让 本地仓库当中的 文件 上传到 服务器当中。

而 现在我们所使用的 远端仓库,基本上都是 一些 大型企业 在进行管理的 服务器,一般来说是很难出现问题的,就算出现问题,也就很快进行解决。


而且,关于远端仓库不只有存储本地文件的作用,我们开发的一个大型项目,很多时候都不是我们自己一个人在开发,可能有很多人在一起开发,一个人完成一部分内容,然后,每一个把自己完成的那一部分内容上传到 远端仓库,供别人参考使用,来创建其他人自己要实现的一部分。这就是多人协作


当然,不只有git 一个软件,还有像类似 svn 这样的软件,但是,绝大数的软件是要收费的,但是 git 是开源免费的。

而所谓 git 就是一个 具有网络功能的控制器git 既可以充当 client(服务端),又可以做 server (服务端) 。所以,我们既可以把自己代码推送上去,又可以把 别人的代码拉取下来我自己也可以搭建一个远端仓库,让别人拉取我的代码。

专业一点说,git 是一个 去中心化的分布式的版本管理器。

git 的发展

在早期linux开源之后,linux 是一个操作系统,操作系统的软件规模要大得多,那么就注定了参与这个项目的人非常多,有大量的人提交代码,比如通过邮件等等的方式提交自己实现的软件代码文件,linux 的管理者,要审核这些代码的作用和问题,没问题就会把这些代码合并到 linux 代码当中。随着linux的开源,那么提交的代码量就大大增多,linux 当中暴露的问题也就更多了。

这时就有人想,有没有一款软件,能够实现自动合并 代码,然后实现版本隔离,刚开始肯定不是linux 的人自己写,肯定是先去网上寻找,看有没有现成的。但是,当时市面上的版本控制器是要收费的,那么linux 又是开源的,这就不符合了,开源的操作系统需要用一款闭源的版本控制器。

而且,收费不是谁都愿意缴费来使用这个版本控制器的,用户想从服务器当中拉取一段代码,还要话钱,用户肯定会不满意,毕竟这是开源的操作系统。那么对于开源的社区体量就有了一个限制了,不利于linux 的传播,这肯定不是 linux 开发者想看到的。

在当时有一个 比较情怀的公司,专门做版本隔离软件的,也是靠这个软件存活的公司,就了解到 linux 有版本隔离软件这个需求,就免费给 linux 提供这个版本隔离的软件。但是,这个版本隔离软件,经过linux 内部人员 和 公司的进行加密的。

但是,毕竟 linux 是开源的,人才济济,有人就对 这个 版本隔离软件 进行 破解查看,此时就被 公司当中的人发现了,公司人就认为,免费给linux 用的软件,现在又被破解,心里就不舒服,就把 这个软件给回收 了。

至此,linux又一夜回到解放前。

所以,Linus Torvalds 就自己写了一个版本隔离软件,叫做 git。

但是 git 有只是一个软件,对于 服务器 还是要自己搭建,所以,就基于 git 搞了商业化的网站 --- github 和 gitee。

同时,还基于 linux 内核 搞了一些 商业化的 OS 比如 :Centos,ubuntu等等

安装 git

可以直接使用 yum 应用商店来安装:

cpp 复制代码
yum install git

git 的使用

把远端仓库拉取到本地

在 linux 当中使用 git 把 gitee 当中的 远端仓库拉取到 本地,于本地仓库进行连接:

在 gitee 当中选择你想链接的远端仓库,然后点击 "克隆/下载" ,选择 你想要 链接的协议,这里我们就选择 HTTPS,在公司当中可能更多会使用自己搭建的 比如 SVN 服务器。

复制上述链接。

打开你的linux 操作系统。

在链接之前,请确保你的 linux 操作系统当中已经安装了 git :

或者使用 git --version git --help 查看:

如果是和上述类似的,说明此时已经安装好了。

此时我们在 用户目录当中新创建一个 test_git_code 目录,用于上传文件到 gitee。

然后使用如下命令来搭建 远端仓库和 本地仓库连接:

bash 复制代码
git clone 远端仓库链接

在输入上述指令之后,就会让你输入用户名和用户密码,输入之后就配置成功了。

此时查看本目录下,就会发现一个新建的和 远端仓库同名的 本地文件夹。

在git 首次使用的时候,可能会让你设置一些 个人信息:

只需要按照它的提示,输入 一下命令, 设置一下就行:

bash 复制代码
git config --global user.email ""   和 git config --global user.name ""

设置这个个人信息,主要是:当自己上传的项目出现问题之后,被使用的用户发现了,后者是用户对于你的项目的使用等等的方面有各种各样的问题,需要用过这个练习方式来找到你。

或者是在公司当中,写的项目,被 leader 发现了问题,那么leader 也可以通过这个方式来找到你。

使用git 三板斧 从本地 提交文件到远端仓库

我们 cd 到这个目录 的当中去,使用 -al 查看当前目录下的全部文件 ,就会发现一个 .git 目录,这个目录就我们可以进行传输的目录了

这还是一个 隐藏目录 ,这里面有你写入文件等等一些日志,之所以设置成隐藏文件,就是不想让你看到,不想让你做修改,所以我们千万不要对.git 目录当中的内容进行修改

假设现在我们想把 text_git_code 这个文件上述传到 gitee 当中的话,就只需要直接把 这个文件 cp (移动)到 本地的于gitee仓库同名的文件当中,注意不是 .git 当中。

然后使用 git add . 这个命名,表示把仓库当中 没有添加到 远端仓库的文件添加到,先暂时添加到 仓库的缓存区当中。

然后使用 git commit -m "" 命令。注意:其中 "-m" 是必须写的,"" 当中的内容就是提交这个文件的日志,这个日志也是要写的,而且不能胡写,要写这个文件当中做了什么。

上述两步其实都还是在本地目录当中,要上传到远端仓库当中还需要最后一步是:git push 把仓库缓存区当中文件推送到 远端仓库当中,这一步需要输入 用户名和密码

注意:如果在使用 git add . 之后,又对要上传的文件进行了修改的话,一定要再次使用 git add . 命令,以为 add 命令不是上传 文件本身全部代码,而是上述你 增删查改文件的那一部分代码。

自己的提交记录,别人是可以查看的,使用git log 命令就可以查看历史提交记录

查看别人的仓库 提交日志也是一样的,和上述一样,找到 仓库链接,然后使用这个链接 把仓库文件夹 clone 到本地,然后,cd 到这个仓库当中去使用 git log 就可以查看这个仓库当中的提交日志。


git status 命令

我们还可以使用 git status 命令来查看当前的本地作业环境下,有没有没有提交的文件,也就是在 从远端拉取到本地的目录当中,有没有 没有提交的文件,或者是修改文件的之后没有提交的文件。

如果没有就会提示:

有就会提示,当前有几个文件没有提交进去,对应文件名也会显示。

如你愿意尝试的话,上述提到的三板斧,你的文件提交 三板斧 的 哪一步了,他都是会有提示的,而且会提示你当前这个文件应该怎样操作。

指定某后缀 文件不添加到 仓库当中

如果你已经拉取 远端仓库 到本地,那么cd 打开在本地拉取的 文件夹,你会发现一个 .gitignore

的隐藏文件:

这个文件当中就包含了 你不想要添加的 文件名后缀,和一些日志信息,调试信息,调试文件等等,后面的都不用管,我们可以直接 使用 vim 编辑这个文件,在这个文件当中 手动写上不想要 上传的文件名后缀:

注意:上述 后缀名之前的 "*" 不能遗漏。

此时,我们 在本地拉取的 库文件当中创建 这两个后缀的 文件,然后使用 git status 命令,发现给出提示,这些文件是不能上传的,已经被识别出来了:

git提交 免密 提交代码

git本地免密码和账号pull、push_没有git账号怎么拉代码-CSDN博客

git 当中交提交代码本来是要输入密码的,但是可以进行免密操作,具体请看上述博客。

相关推荐
高林雨露15 分钟前
git 空项目初次提交项目命令记录
git
liu8341894471 小时前
git 本地分支误删,怎么恢复?误删本地已提交未推送的分支!
git
+码农快讯+1 小时前
Git clone远程仓库没有其他分支的问题
git
多恩Stone2 小时前
【Hugging Face 下载中断】Git LFS 如何下载指定文件、单个文件夹?
git·stable diffusion·huggingface·diffusers
佚明zj3 小时前
如何配置ssh key 到gitlab, 实现git push
git·ssh·gitlab
半糖11223 小时前
git配置SSH
git·ssh
橘色的喵7 小时前
git 如何基于某个分支rebase?
git·rebase
未来可期LJ7 小时前
【Git 操作】Git 的基本操作
git
送你一朵小莲花7 小时前
git merge如何忽略部分路径
git
2401_864476938 小时前
无线领夹麦克风哪个降噪好?一文搞懂麦克风什么牌子的音质效果好
javascript·git·sql·github·mssql