> 技术文档 > 关于命令行下的 git( git add、git commit、git push)

关于命令行下的 git( git add、git commit、git push)


文章目录

  • 关于 git
    • git 的概念
    • git 操作(git add、git commit、git push 三板斧)
      • 安装 git
      • 新建仓库及配置
      • git clone
      • .gitignore
      • git add
      • git commit
      • git push
      • 其他 git 指令
      • git pull(把远端的东西拉到本地进行同步)
      • 其他指令

关于 git

git 的概念

Git 是一个分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,主要用于管理软件开发中的代码变更。它允许多个开发者协同工作,记录每次代码修改,并支持回滚到任意历史版本。

仓库(Repository): 存储项目文件及其历史记录的地方,分为本地仓库(开发者本地机器上)和远程仓库(GitHub、GitLab、Gitee等)。
工作区(Working Directory): 用户当前操作的文件目录。
暂存区(Staging Area): 临时保存即将提交的更改。
提交(Commit): 将暂存区的更改永久保存到仓库,每次提交生成一个唯一的 SHA-1 哈希值。
分支(Branch): 从主线分离的独立开发线,默认分支为 master 或 main。
合并(Merge): 将一个分支的更改整合到另一个分支。
克隆(Clone): 从远程仓库复制整个项目到本地。
拉取(Pull): 从远程仓库获取最新更改并合并到本地分支。
推送(Push): 将本地更改上传到远程仓库。

git 操作(git add、git commit、git push 三板斧)

安装 git

在我们在 Linux 下进行 git 的命令行操作时,得先安装一下 git 。
指令:sudo yum install -y git
当你首次使用新安装的 git 的时候,git 会提示你进行配置用户名和邮箱。按照提示配置即可。
关于命令行下的 git( git add、git commit、git push)

新建仓库及配置

我们可以在 gitee 上新建一个仓库(在我们注册登录 gitee 账号之后右上角的 ‘+“ 符号新建仓库)
仓库名字我们要根据自己的需求命名规范,方便自己或者他人的查看。
接下来再设置初始化仓库设置模板选择分支模型等,如下:
关于命令行下的 git( git add、git commit、git push)
初始化仓库:
1)选择语言,选择自己所使用的语言即可,比如小编选择的 C++
2)添加 .gitignore,也选择自己所使用的语言即可,这个东西是干什么的我们下面详细说。
3)开源许可证我们随便选一个都可以。
设置模板:
1)建议选择 Readme 文件;Readme 相当于你的代码的说明文档。
分支模型:
1)这些分支模型都是和开发有关的,目前我们使用默认就可以。以后我们做开发的时候可能就会使用多分支。

做了以上设置之后,我们点击创建即可,创建之后,此时在我们对应的远端就形成了一个仓库。接下来我们就可以在我们的 Linux 下做代码提交了。怎么做呢?

git clone

我们形成仓库之后,我们想要在 Linux 下做代码提交,首先我们要先找到仓库的链接,如下图:
关于命令行下的 git( git add、git commit、git push)
找到仓库链接之后,复制该链接:
关于命令行下的 git( git add、git commit、git push)
小贴士:实际上我们提交代码的时候有很多种不同的提交方式:HTTPS、SSH、SVN等等,但是新手我们建议使用 HTTPS 的,而 SSH 等熟悉之后再用(因为比较麻烦,需要在本地形成对应私钥、公钥,然后在你的配置当中仓库里添加密钥信息的等等)

做完以上工作之后,我们就可以在 Linux 下把我们的远端的仓库拉取下来
指令:git clone 仓库链接
此时可能要用户输入你的 gitee 账号的密码。
做完以上工作以后,在当前目录就会形成我们的仓库了:
关于命令行下的 git( git add、git commit、git push)
此时进入这个仓库目录,ls/ll 就能看到我们在 gitee 上看到的文件。

.gitignore

当我们 ls -al 仓库目录时,我们就能看见 .gitignore 这个文件:
关于命令行下的 git( git add、git commit、git push)
这个文件是干什么的呢?我们 vim 进入这个文件,我们可以看到很多文件的后缀:
关于命令行下的 git( git add、git commit、git push)
首先我们要知道,git 上传文件的只需要传源代码( .h/.c/.cpp )就可以了,其他临时文件不需要传上去,而 .gitignore 文件就可以保证,凡是在这个文件中存在的文件后缀所对应的文件,正常 git 操作的时候,不会被上传到远端的仓库下。
小贴士:如果我们不想让带有某些后缀的文件上传到我们的远端仓库上,我们也可以在 .gitignore 文件中添加上这种后缀。

另外,当我们 ls -al 仓库目录时,除了 .gitignore 之外,还有一个 .git ,这个就是我们的本地仓库。所谓的 git 仓库,本质上就是一个目录,名字叫 .git ;再加上里面的内容。而我们后面学的 push 到远端仓库,本质上就是将你的 .git 里面的内容同步到远端仓库上。而远端仓库上实际上也有一个和 .git 一模一样的文件夹,只不过是我们看不到而已。

git add

当我们把代码文件放到仓库中, git add 文件名, 就可以将需要用 git 管理的文件告知 git 。我们来测试一下,下面我们在仓库中创建一个 process 目录,里面放置我们的代码文件 test.c
关于命令行下的 git( git add、git commit、git push)
下面执行命令:git add . 这个命令的意思是将我们新增的文件,把它添加到本地仓库。(将新增的文件进行二进制转码 添加到 .git 中)

git commit

指令:git commit -m ‘日志信息’
git commit 是提交,-m 后面必须写上我们的提交日志,这个日志不能没有,没有的话就会报错。另外,日志不能乱写,因为日志记录自己做了什么事情,什么修改,方便团队协作别人和自己的查看。而这个提交并不是提交到远端,而是把新增的文件提交到本地仓库,add 只是添加到仓库(添加到临时区域),commit 就是合并到本地仓库,也就是本地有这个代码了,而远端没有。
关于命令行下的 git( git add、git commit、git push)

git push

git commit 之后,我们的本地仓库已经有我们的代码文件了,而此时我们想要同步到远端时,就可以用 git push 了。
git push :把本地内容提交到远端。
关于命令行下的 git( git add、git commit、git push)
git push 完成之后,此时我们刷新一下我们的 gitee 仓库,此时我们就能看到我们刚刚新建的目录 process 以及里面的代码文件了。而 commit 提交的日志信息也显示在上面了。
如果途中出现下面的情况:
关于命令行下的 git( git add、git commit、git push)
我们按照提示输入操作即可:
关于命令行下的 git( git add、git commit、git push)
当然,git push 的时候,如果你不想频繁输入账号密码,也能配置免密码上传:
配置免密码

其他 git 指令

1)git log 查看提交日志信息。
关于命令行下的 git( git add、git commit、git push)
2)git status 查看当前的状态(记录一些变化,比如新增文件,修改了文件等等)。
关于命令行下的 git( git add、git commit、git push)
关于命令行下的 git( git add、git commit、git push)

git pull(把远端的东西拉到本地进行同步)

我们上传到远端仓库的代码是可以在远端编辑修改的,假如我们在远端修改了自己从 Linux 上传到远端的代码并提交了,此时我们假如不知道远端做了修改,我在linux 下新建了一个文件,然后再进行 git 三板斧(add,commit,push)提交到远端,也就是说我在远端把代码改了,在本地仓库我也做了修改,这时候我们提交到远端的时候,系统就会告诉我们冲突了。此时我们就可以用 git pull了。

git pull 把远端的代码先拉取到本地进行同步,同步的时候会进行合并,我们默认就可以,这时候再进行 git push,这时候就能识别提交到远端,不会冲突了。这时候我们在远端刷新仓库,也就能看到新增的文件了。并且在本地也能看到在远端做了修改的代码。

这个场景就像在工作中我们有几个人共用一个仓库,你的小组成员在远端对代码做了修改,你在本地也做了修改,而这时你上传代码的时候发现冲突了上传不了,这时候就可以用 git pull。这个冲突的本质也是强制我们每一个人必须随时随地地和远端仓库保持一致,不一致就 pull 一下同步。

其他指令

如果我们想对仓库里面的文件重命名,用 git mv
如果我们想删除仓库里面的文件,用 git rm,再 git commit git push 提交即可。