Skip to content

Git入门

前提条件

Git概况

点了不后悔

Git的背景故事我就放下面了。

Git是一个流行、免费开源的版本控制软件。 什么是版本控制?我们可以从玩游戏的角度来理解版本控制。 如果你曾经游玩过闯关类的单机游戏,那么你应该会经常接触到存档系统。

某一天,平静的村庄闯进了大boss恶魔掳走了小红。为了救回你的青梅竹马小红,打败boss并摧毁它们的邪恶计划,你必须手持利剑分别通过

  1. 丛林关
  2. 湖泊关
  3. 沼泽关
  4. 火山关

等关卡。在你闯关的途中,你会经常切换出游戏菜单进行存档。这样,一旦你由于打不过怪物死掉了,你可以选择任意的存档进行重来。有时,boss实在太难打了,你不得不把你的存档交给你哥哥或者你操作熟练的好基友。在存档的帮助下,你最终成为了拯救世界的英雄。

代码开发和打游戏是很相似的。不同的是,平静的村庄变成了你所在的开发团队,大Boss被感化成了老板了,你的目的现在是完成良好的代码。 而版本控制,就是你开发中的存档系统。

假设你的项目是一个打造屠龙宝刀的程序。 那么,你的开发关卡可以分为:

  1. 材料收集功能
  2. 熔铸功能
  3. 镶嵌功能
  4. 强化功能
  5. 挥舞屠龙刀功能

如果没有版本控制,你的每次失误都可能造成从头再来。

而且,团队的项目往往比个人的项目要复杂的多。打造屠龙宝刀的任务在团队环境中,可能是打造四大神器。 具体是:

你负责战士神器 -- 屠龙宝刀
同事A负责法师神器 -- 麻痹戒指;
同事B负责坦克神器 -- 盘古盾;
同事C负责射手神器 -- 后羿弓;

相当于每个人都有各自的职业(分支)。项目的完成,最终是每个不同的职业(分支)存档的完成。

这就是版本控制在开发中的作用。而现在,在众多的版本控制软件中,Git是最主流的。

安装Git

  • Git官方下载源

    请尝试自己动手安装。若powershell终端输入下方命令后返回版本号则代表安装成功。

    powershell
    > git -v
    > git -v

Git的使用大师

❌ 不同于先前推荐的工具,我们推荐入手Git的方式不再是官方文档(Git)

第一步

快速成为Git使用大师,请点击Learn Git Branch--社区开源的Git可视化学习项目yyds(永远的神)。

入门者请一定独立完成整个闯关流程。如果你觉得十分吃力,可以稍微看一眼Git分支学习陪玩
如果你独立完成了上述挑战,你对Git的认知已经超越市场上绝大部分的程序员了。接着,第二步--练一下

练一下


  • 安装Git后,如何使用Git管理一个代码项目?
powershell
> code [$你自己的项目根目录] #这里使用vscode的终端界面进行操作
> code [$你自己的项目根目录] #这里使用vscode的终端界面进行操作
powershell
> git init #执行此命令后,git会在该目录安营扎寨,标志管理初始化完成
> git init #执行此命令后,git会在该目录安营扎寨,标志管理初始化完成
powershell
# 设置git用户的信息 -- (你自己的信息,--local可省略)
> git config --local user.name [$你的名字] 
> git config --local user.email [$你的邮箱]

# 或
# 全局设置git用户信息(设置全局后,任何没有单独设置git信息的项目都会使用全局信息)
> git config --global user.name [$你的名字]
> git config --global user.email [$你的邮箱]

# 配置git的网络代理(为了更流畅地使用,务必自备代理)
> git config --global http.https://github.com.proxy socks5://127.0.0.1:[$你的代理端口]

# (可选一)连接空的git远程仓库
> git remote add origin [$远程仓库的网络地址] # 连接远程仓库
> git remote -v # 查看远程仓库是否连接成功

# (可选二)直接克隆已有的git远程仓库的代码到本地
> git clone [$远程仓库的网络地址]
#  或(可选二)只克隆已有仓库指定分支的代码到本地
> git clone -b [$分支名] [$远程仓库的网络地址]
> git clone -b [$分支名] [$远程仓库的网络地址] [$指定本地目录] # 多一个本地目录的指定,作用自己尝试
# 设置git用户的信息 -- (你自己的信息,--local可省略)
> git config --local user.name [$你的名字] 
> git config --local user.email [$你的邮箱]

# 或
# 全局设置git用户信息(设置全局后,任何没有单独设置git信息的项目都会使用全局信息)
> git config --global user.name [$你的名字]
> git config --global user.email [$你的邮箱]

# 配置git的网络代理(为了更流畅地使用,务必自备代理)
> git config --global http.https://github.com.proxy socks5://127.0.0.1:[$你的代理端口]

# (可选一)连接空的git远程仓库
> git remote add origin [$远程仓库的网络地址] # 连接远程仓库
> git remote -v # 查看远程仓库是否连接成功

# (可选二)直接克隆已有的git远程仓库的代码到本地
> git clone [$远程仓库的网络地址]
#  或(可选二)只克隆已有仓库指定分支的代码到本地
> git clone -b [$分支名] [$远程仓库的网络地址]
> git clone -b [$分支名] [$远程仓库的网络地址] [$指定本地目录] # 多一个本地目录的指定,作用自己尝试
powershell
# 流行git远程库平台可选 Github,Gitlab,Gitee 这里以Github为例
# 流行git远程库平台可选 Github,Gitlab,Gitee 这里以Github为例

  • 如何使用Git的远程仓库?

一、寻找支持创建Git仓库的平台。

这些平台有:Github, Gitlab, Gitee。其它的我也不知道了。
我们选择大名鼎鼎的--Github

二、在Github中创建一个库。

大致步骤
  1. 确保注册了Github的账号(作为一名开发者,Github是你最值得信赖的社区之一,请牢记你的账号就像qq或微信一样)
  2. 找到Github官网中与创建代码库相关的功能 -- 当前为create new repository
  3. 参照功能页提示创建你的第一个Git社区远程代码仓库

以上步骤,也可以参照b站视频操作流程Git开发模拟 - 工具篇;

三、本地远程交互

几乎全部交互功能,在第一步的游戏里已经被覆盖了。如果你对操作仍然有疑惑,建议你参照上述视频。

更好地进行仓库交互

当你尝试将代码上传至远程时,为了确认你的身份,需要你频繁地进行身份验证。

如果你疲于重复地输入账户密码,请使用ssh密钥(参见GitHub文档——通过 SSH 连接到 GitHub)将你的电脑与git任意平台进行绑定。在绑定之后,ssh作为你的钥匙,访问远程仓库就非常便捷啦。

当然,上述视频中也实现了流程示例。

powershell
> ssh-keygen -t rsa -b 4096 -C "[$你注册的邮箱]"
> ssh-keygen -t rsa -b 4096 -C "[$你注册的邮箱]"
powershell
# 该命令进入密钥存放路径, ~是个路径别名,它指的是你当前Window系统用户的根目录
> cd ~/.ssh 
# 查看当前目录下的文件,公钥的内容存放在文件id_rsa.pub中
> ls
# 该命令获取id_rsa.pub的文本信息
> cat id_rsa.pub
# 复制公钥信息,在Github官网的个人设置中,找到SSH相关页面绑定window用户(见视频)
# 该命令进入密钥存放路径, ~是个路径别名,它指的是你当前Window系统用户的根目录
> cd ~/.ssh 
# 查看当前目录下的文件,公钥的内容存放在文件id_rsa.pub中
> ls
# 该命令获取id_rsa.pub的文本信息
> cat id_rsa.pub
# 复制公钥信息,在Github官网的个人设置中,找到SSH相关页面绑定window用户(见视频)

开始

好了,配置完以上内容,让我们开始模拟一次团队开发吧。

视频演示可见Git开发模拟 - 工具篇

Git趣闻

Git工具的诞生离不开它的发起人Linus(大名鼎鼎的Linux系统之父)。在Git诞生以前,有一个非常知名的版本管理工具叫BitKeeper, Linux系统的开发使用的也是它。

但由于Bitkeeper是一款收费的商业服务软件,Linux这款著名的开源项目在开发时,处处受限。 于是,Linus便牵头开发了自己的版本管理工具。

感谢Bitkeeper

Released under the MIT License.