Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)

2023/02/09 晚

鉴于本篇文章收藏量比较多,那就给大家分享点在实际工作中使用频率最高的工作流命令吧。

场景如下(多人共同开发一个项目):我叫小明,参与了一个名为 chatGPT 的项目,这个 AI 最近很火,就以此作为例子吧。我们组有 4 个同事共同开发这个项目 develop_chatgpt ,这个项目中有一些文件或目录是我们 4 个各自独立负责的,也有几个文件我们 4 个人都需要负责。于是组长新建了一个 git 仓库, 为我们 4 个人各自新建了一个分支,我的分支名称就叫  develop_xiao.ming(个人分支),项目分支名称叫 develop_chatgpt ,现在就开始了我们 4 个人往 develop_chatgpt  这个分支中贡献自己的代码的快乐之旅了。

1. git clone <把仓库地址复制到这儿>

2. git branch -a                 /*先看下当前在哪个分支(一般克隆后都在master分支),顺便复制一下要去的分支*/

3. git checkout <自己要去的分支名称,比如组长分配的分支是 develop_xiao.ming >

4. git branch         /*再确认一下确实已经在自己的分支了*/

5. git pull origin <develop_chatgpt>                /*从项目分支拉取最新的代码到个人分支,然后再进行修改,保证每次修改都是修改的最新代码*/

5. 修改代码

6. git status         /*看看自己修改了哪些文件*/

7. git add <修改了的文件名称>

8. git commit -m "任务号 注释说明"

9. git push origin <组长给分配的分支比如是 develop_xiao.ming>

10. 然后在网页上从 develop_xiao.ming 往 develop_chatgpt 提交一个合并请求。

11. 在开发的群中给组长发消息说,我做了什么修改,并且提交了一个合并请求,请审查,然后代码没有问题,组长就会把修改的代码合并到 develop_chatgpt 分支中去了。

到此一个完整的工作流就结束啦~

为什么提交了合并请求后需要向组长发消息呢,为了让组长尽快合并代码,方便其他同事修改代码的时候可以拉取到最新的代码;因为这个项目是我们 4 个人共同开发的,试想一下 4 个人共同修改一个文件,每个人在修改代码前都需要去 git pull 拉取最新的代码,如果不去拉取最新的代码,那就相当于自己一个人在自己的分支玩儿,别人都已经合并了好几次代码了,你还是在好久之前的代码基础上修改,等你想提交合并请求时,会出现合并冲突问题。这些大家慢慢会有体会的。

最后感谢大家的支持。

一、安装配置Git

1. 注册 GitHub 账号,GitHub:GitHub: Where the world builds software · GitHub。

2. 在 Linux 中安装 git,并生成授信证书。

开发者向 Git 版本库写入最常用到的协议是SSH协议,因为SSH协议使用公钥认证,可以实现无口令访问,而若使用HTTPS协议每次身份认证时都需要提供口令,即要输入GitHub 的账号和密码。

//第一步:安装git
[root@localhost ~]# yum install git

//第二步:获取ssh密钥,邮箱是注册github时使用的邮箱。(这里的邮箱跟刚才git官网上注册的一致)
[root@localhost ~]# ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):         //输入保存key的文件名,这个随便写,可以写了keyfilename,不写按回车键它会默认创建在 '/root/.ssh' 下。
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):                     //输入密码,就是你每次提交项目代码时必须要输入密码,不想设置的话,直接按回车到下一步。
Enter same passphrase again:                                     //再次确认密码。
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:07gnUfb1vX9w9XcU6YZf67x+27usXahJossmu4zwdgS [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|                .|
|               o |
|          o   + .|
|    E    = . o +=|
|     .  S . . o.B|
|      .  +    .+*|
|  .  .  o o . +++|
|   o.oo..+ o ooo*|
|   .o.+=+.  o.oOX|
+----[SHA256]-----+
[root@localhost ~]#     //到这里就成功啦~
[root@localhost ~]# git version        //验证一下是否安装成功。
git version 1.8.3.1
[root@localhost ~]# cd /root/.ssh/        
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub
//可以看到生成了一个私钥(id_rsa)和公钥(id_rsa.pub)
[root@localhost .ssh]# vi id_rsa.pub            //打开公钥文件进行复制。

3. 建立和 GitHub 的联系。将 Git 证书配置到 GitHub上,保证 Linux 服务器和 GitHub 之间可以连通。

打开 id_rsa.pub 文件,将里面的所有字符 全部复制 出来,粘贴到如下图所示的地方。

点击 github 网页右上角的用户头像->settings->SSH and GPG keys->New SSH key 

Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)_第1张图片

应用场景:需要注意的是,github允许添加多个SSH Keys,假定我们有自己的笔记本和实验室/办公室的电脑,需要将每台电脑的key添加到github,然后可以使用每台电脑往github推送了。

4. 验证是否配置成功。

在 Linux 中执行此命令:ssh [email protected]

看到 You've successfully authenticated,表示配置成功!

//最后一步验证是否配置成功。

[root@localhost .ssh]# ssh [email protected]        //执行此命令
The authenticity of host 'github.com (20.205.243.166)' can't be established.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
PTY allocation request failed on channel 0
Hi Username! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
[root@localhost .ssh]# 

5. 连接成功后,需要绑定用户。

如果让当前电脑的所有git操作均使用同一个git账户,该配置只需要做一次之后Linux主机上所有git管理项目生效::
git config --global user.name "xxxxx"
git config --global user.email "xxx@xxx"

主要注意一个问题,因为git是分布式版本控制系统,所以首次安装的时候都会让机器自报家门,(邮箱+名字)这里的邮箱和名字需要你在github官网(www.github.com)上注册你账号信息,为什么要这样做呢?因为你的代码是要联机上传到github代码托管平台上去的,联机操作下文会详说。(当然,如果你不打算联机操作,那么这个邮箱+名字,你可以随意)。

如果想为每个项目单独配置不同的git用户,在每个项目的主目录下执行:
git config user.name "xxxxx"
git config user.email "xxx@xxx"

[root@localhost git_space]# git config --global user.name "******"
[root@localhost git_space]# git config --global user.email "********@***.com"

ps git config  –global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

二、使用 Git 提交项目文件

分两小节,内容概要:

1. 从本地新建项目,提交上传至 GitHub 。

  • 如果你有一个尚未进行版本控制的项目目录,想要用 Git 来控制它,那么首先需要进入该项目目录中。将尚未进行版本控制的本地目录转换为 Git 仓库;即执行 git init 初始化命令。
$ git init

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。

2. 从 GitHub 上 Clone一个仓库,修改并上传至原仓库。比如说项目组长已经给你创建好仓库和你的分支了,然后你需要提交代码了,这时候就需要克隆了。

如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源项目贡献自己的一份力,这时就要用到 git clone 命令。 如果你对其它的 VCS 系统(比如说 Subversion)很熟悉,请留心一下你所使用的命令是"clone"而不是"checkout"。 这是 Git 区别于其它版本控制系统的一个重要特性,Git 克隆的是该 Git 仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。 当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。 事实上,如果你的服务器的磁盘坏掉了,你通常可以使用任何一个克隆下来的用户端来重建服务器上的仓库 (虽然可能会丢失某些服务器端的钩子(hook)设置,但是所有版本的数据仍在,详见 在服务器上搭建 Git )。

克隆仓库的命令是 git clone  。 比如,要克隆 Git 的链接库 libgit2,可以用下面的命令:

$ git clone https://github.com/libgit2/libgit2

这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。

如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以通过额外的参数指定新的目录名:

$ git clone https://github.com/libgit2/libgit2 mylibgit

这会执行与上一条命令相同的操作,但目标目录名变为了 mylibgit

复制自:Git - 获取 Git 仓库 (git-scm.com)

2.1 从本地新建项目,提交上传至 GitHub 。

        (1) 在 Linux 本地中新建一个工作目录,作为远程目录的本地副本。

//步骤
[root@localhost ~]# mkdir git_space
[root@localhost ~]# cd git_space/
[root@localhost git_space]# git init                     //把这个目录变成 Git可以管理的仓库
Initialized empty Git repository in /root/git_space/.git/
[root@localhost git_space]# cp ../workspace/callback_example_2/ ./ -r        //将自己写的项目文件复制到本地 git 副本目录下。
[root@localhost git_space]# ls
callback_example_2
[root@localhost git_space]# git add callback_example_2        //git add 后可以跟单个文件、目录。
[root@localhost git_space]# git status                    //查看当前工作区的状态(需提交的变更文件)。
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached ..." to unstage)
#
#	new file:   callback_example_2/bin/Makefile
#	new file:   callback_example_2/bin/Makefile_bak
#	new file:   callback_example_2/bin/main.c
#	new file:   callback_example_2/bin/notice_wake_app.1.0.0.1
#	new file:   callback_example_2/include/libnotice_wake.h
#	new file:   callback_example_2/lib/libnotice_wake.so
#	new file:   callback_example_2/src/Makefile
#	new file:   callback_example_2/src/libnotice_wake.c
#	new file:   callback_example_2/src/libnotice_wake.h
#

//提交到本地git仓库
[root@localhost git_space]# git commit -m "新建项目"
[master (root-commit) d5cddc1] 新建项目
 Committer: root 
 9 files changed, 221 insertions(+)
 create mode 100644 callback_example_2/bin/Makefile
 create mode 100644 callback_example_2/bin/Makefile_bak
 create mode 100644 callback_example_2/bin/main.c
 create mode 100755 callback_example_2/bin/notice_wake_app.1.0.0.1
 create mode 100644 callback_example_2/include/libnotice_wake.h
 create mode 100755 callback_example_2/lib/libnotice_wake.so
 create mode 100644 callback_example_2/src/Makefile
 create mode 100644 callback_example_2/src/libnotice_wake.c
 create mode 100644 callback_example_2/src/libnotice_wake.h
[root@localhost git_space]#

       (2) 在 GitHub 中创建远程仓库。

首先新建一个仓库。

Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)_第2张图片

Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)_第3张图片

仓库地址使用 SSH 协议,如果用https地址每次push/pull都要输入github账号密码。

创建远程仓库成功后界面如下:

Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)_第4张图片

将上图的命令复制下执行。

关联到远程仓库。

//关联远程仓库
[root@localhost git_space]# git remote add origin [email protected]:******/studyspace.git  
//将本地库内容推送到远程仓库
[root@localhost git_space]# git push -u origin master
Counting objects: 15, done.
Delta compression using up to 3 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (15/15), 10.57 KiB | 0 bytes/s, done.
Total 15 (delta 0), reused 0 (delta 0)
To [email protected]:******/studyspace.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.
[root@localhost git_space]# 

使用 SSH 协议,我在 push 过程中就没有输任何账号和密码。 

此时 你在刷新你github上的项目就可以看到文件已经上传了。

Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)_第5张图片

至此,从零完成了从本地新建项目提交至 GitHub。

为啥添加过程不能用一条git commit命令来完成呢,这儿涉及一个工作区和暂存区的概念。工作区是电脑能看到的目录,比如learngit文件夹是一个工作区(如下图左所示)。在learngit文件夹有个隐藏目录.git,不属于工作区,而是git的版本库,版本库中重要的两部分是暂存区(下图中),和创建的第一个分区master(下图右)。

Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)_第6张图片

2.2  从 github 上 clone一个仓库,修改并上传至原仓库。

如果从零开发,最好的方式是先创建远程库(和前面创建远程库的操作一样),然后从远程库克隆。

第一步我们在 Linux 本地创建一个目录,比叫目录名叫 “git_study”。

  • 从 github上 clone 代码

我们在 git_study 目录下执行:git clone [email protected]:用户名/项目名.git 命令。

可能会报如下错误:意思是说你克隆了一个空的仓库。

[root@localhost git_study]# git clone [email protected]:用户名/项目名.git
Cloning into 'packet_process'...
warning: You appear to have cloned an empty repository.
[root@localhost git_study]# ls
项目名
[root@localhost git_study]# 

需要说明的是,我们先创建远程库(该远程库是空的,没有任何文件),然后直接在 Linux 上克隆该远程库后,不需要再执行该工作区目录的初始化命令 git init  和 关联远程库的命令的:git remote add origin [email protected]:******/studyspace.git ,然后我们就可以直接执行git add,git commit,git push 等命令了。 

实际上,git clone 命令在执行时,已经将该项目目录和 GitHub 上的远程仓库建立了关联。

现在我们要在 Linux 本地写代码了,写完了,我们要提交到 GitHub 的仓库上。

  • 先将我们新写的代码文件添加到本地暂存区。

git add 文件名         #表示将文件加入本地暂存区

git add . #表示将当前文件夹下所有文件添加至暂存区

  • 确认提交更改。

git commit -m "提交的更改说明"

  • 将本地库内容推送到远程仓库github。输入下述命令,输入命令之后,按照提示输入github的用户名和密码即可。

git push origion "分支用户名"                //将本地主分支推到支远程主分。

如果想撤回add或commit,参考链接1 参考链接2

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并覆盖本地文件:
git fetch origin
git reset --hard origin/master

常见场景:

准备工作:我们先创建一个文件 main.c。

[root@localhost packet_process]# ls
main.c  README
[root@localhost packet_process]# cat main.c 
#include 

int main()
{
	printf("hello word! \n");
	return 0;
}
[root@localhost packet_process]# 

0 . 如果想要删除某个文件
        git rm filename (同时会删除本地文件)

1. 从暂存区撤离将要提交的文件

给定一个这样的场景,你讲一个文件修改完毕后,将它添加到暂存区,以便将来提交,但是你突然觉得还有东西没有改好,那只能把文件从暂存区撤回。

git reset HEAD 文件名                         //将暂存区的文件撤回

-----------------------------------------------------------详细说明-------------------------------------------------------------

1. git add 添加 多余文件
这样的错误是由于, 有的时候 可能

git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件

git add 如果添加了错误的文件的话

撤销操作

git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.c 就是对某个文件进行撤销了

实践环节 :

[root@localhost packet_process]# git status        //先看下有啥变更,说有一个未追踪的文件main.c。需要使用 git add 去追踪它。
# On branch master
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#	main.c
nothing added to commit but untracked files present (use "git add" to track)
[root@localhost packet_process]# 
[root@localhost packet_process]# git add main.c    //git add 将 main.c 添加到暂存区。 
[root@localhost packet_process]# git status        //再看一下状态有啥变化,提示有一个新文件。
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#	new file:   main.c
#
[root@localhost packet_process]# git reset HEAD main.c        //从暂存区中撤销出来。
[root@localhost packet_process]# git status                    //再看下状态,和未添加到暂存区时的状态一样了。
# On branch master
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#	main.c
nothing added to commit but untracked files present (use "git add" to track)
[root@localhost packet_process]# 

2. git commit 错误,没有 push 时。

如果不小心 弄错了 git add后 , 又 git commit 了。
先使用
git log 查看节点
commit xxxxxxxxxxxxxxxxxxxxxxxxxx
Merge:
Author:
Date:

然后 git reset commit_id (回退到上一个 提交的节点 代码还是原来你修改了的)。

直接查看该链接,讲的很好:git如何撤销commit的方法(未push)_相关技巧_脚本之家 (jb51.net)

说明:还没有 push 的时候

  • git reset commit_id (回退到上一个 提交的节点 代码还是原来你修改的)。
  • git reset –hard commit_id (回退到上一个commit节点, 代码也发生了改变,变成上一次的)。
  • git reset 命令分为两种: git reset –-soft 与 git reset –-hard ,区别是:

       前者表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。后者直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。--soft选项的意思是,保留当前工作区,以便于我们修改完之后重新提交。如果采用--hard,那么会还原到对应的版本,我们就不能达成“撤销提交,修改一点点之后重新提交并推送”的目的了。

3.如果要是 提交了以后,可以使用 git revert

当然,我们一般的使用时,如果已经push了,使用revert,如果没有,就是用reset。(25条消息) git reset 和 revert 的区别_Ardor-Zhang的博客-CSDN博客_git reset revert区别

还原已经提交的修改
此次操作之前和之后的 commit 和 history 都会保留,并且把这次撤销作为一次最新的提交。

git revert HEAD                 //撤销前一次 commit
git revert HEAD^                  //撤销前前一次 commit,^代表上一个的意思,HEAD^^代表上两个;HEAD~100代表上100个版本,
git revert commit-id                 //(撤销指定的版本,撤销也会作为一次提交进行保存)
git revert 是提交一个新的版本,将需要 revert 的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

复制来源:(25条消息) git add , git commit 添加错文件 撤销_空白的泡的博客-CSDN博客_git撤销add的文件

1. 以下载 cJSON 开源项目为例。

复制下图红色方框的内容: [email protected]:DaveGamble/cJSON.git 

Linux 系统使用 git 提交代码-- git 的安装及使用(简明教学指南)_第7张图片

[root@localhost git_space]# git clone [email protected]:DaveGamble/cJSON.git
Cloning into 'cJSON'...
remote: Enumerating objects: 4545, done.
remote: Counting objects: 100% (59/59), done.
remote: Compressing objects: 100% (45/45), done.
remote: Total 4545 (delta 29), reused 30 (delta 14), pack-reused 4486
Receiving objects: 100% (4545/4545), 2.50 MiB | 886.00 KiB/s, done.
Resolving deltas: 100% (3014/3014), done.
[root@localhost git_space]# ls
callback_example_2  cJSON
[root@localhost git_space]# cd c
callback_example_2/ cJSON/              
[root@localhost git_space]# cd cJSON/
[root@localhost cJSON]# ls
appveyor.yml  cJSON.c  cJSON_Utils.c  CMakeLists.txt   fuzzing         LICENSE   README.md  tests
CHANGELOG.md  cJSON.h  cJSON_Utils.h  CONTRIBUTORS.md  library_config  Makefile  test.c     valgrind.supp
[root@localhost cJSON]# 

问题:

如果没有配置 git 的用户信息,直接去 commit 会有如下提示信息,此时我们用下列两个命令配置就好了。

git config --global user.name "Your Name"
git config --global user.email [email protected]

[root@localhost git_space]# git commit -m "新建项目"
[master (root-commit) d5cddc1] 新建项目
 Committer: root 
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email [email protected]

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

//以上内容的翻译:
提交者:root 
您的姓名和电子邮件地址是根据自动配置的
在您的用户名和主机名上。 请检查它们是否准确。
您可以通过明确地设置来确定此信息:

     git config --global user.name "你的名字"
     git config --global user.email [email protected]

完成此操作后,您可以通过以下方式修复用于此提交的身份:

     git commit --amend --reset-author

参考资料:

1. (23条消息) Linux下使用Git教程(一)_大道之简的博客-CSDN博客_linux下使用githttps://blog.csdn.net/HcJsJqJSSM/article/details/82941340

*2. 超全,有例子演示,强烈推荐,有常用的命令。(23条消息) Linux 下git的使用总结(详解)_weixin_41521306的博客-CSDN博客_linux下git的使用https://blog.csdn.net/weixin_41521306/article/details/98513985?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6.pc_relevant_paycolumn_v3&utm_relevant_index=13

 3. Git 中文手册。Git Community Book 中文版http://gitbook.liuhui998.com

4. 基本命令,可查。Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)https://www.liaoxuefeng.com/wiki/896043488029600 5. git命令,可查。Github 简明教程 | 菜鸟教程 (runoob.com)https://www.runoob.com/w3cnote/git-guide.html

6. git 指南,可查手册。Git - 获取 Git 仓库 (git-scm.com)https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%BA%93

7. 清晰(25条消息) [使用教程] 在linux中使用git_ok_kakaka的博客-CSDN博客_linux使用githttps://gamma.blog.csdn.net/article/details/84242557?spm=1001.2101.3001.6650.18&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-18.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-18.pc_relevant_paycolumn_v3&utm_relevant_index=25

8. 简明(25条消息) linux使用git上传项目到github_疯跑蜗牛的博客-CSDN博客_linux上传githttps://blog.csdn.net/hxf0663/article/details/79527453?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_aa&utm_relevant_index=1

Git 优秀教程推荐
1.git - the simple guide - no deep shit! (rogerdudler.github.io)          [图形化模式,简单易懂]
2.图解Git (marklodato.github.io)                 [一样是图形化教程]
4.521xueweihan/git-tips: Git的奇技淫巧 (github.com)       [制作的思维导图非常棒]

5.一个小时学会Git - 张果 - 博客园 (cnblogs.com)


优秀教程参考:Git 详细安装教程(详解 Git 安装过程的每一个步骤)_mukes的博客-CSDN博客_git安装

 END......

你可能感兴趣的:(软件学习,C语言开源项目学习,github,git,linux,运维)