• 使用 Git 来管理代码(上)


    关于我的代码仓库

    如果你关注我的 Github,那你应该知道,我最近新建了一个仓库,专门用来存放我平常在OJ上刷的题的代码,地址在这里:

    https://github.com/dong628/OhMyCodes(求star啊啊啊)

    这个仓库使用 MIT 协议开源,意味着任何人都可以复制、修改、分发(商业或非商业),并且不需要使用相同的协议。

    目前位置,一共有67次 commit ,记录着我从2020年5月的刷题记录。

    为什么使用 Git

    我每天上午会去学校机房刷题,下午有时间会接着刷,于是,在这两个地方管理代码就显得很麻烦。

    一个朴素的策略是,用一个可移动存储介质(比如U盘)在家和学校之间拷贝代码。U盘,机房和家中的电脑同时存放着一份我刷过所有题的代码,每次我在家或学校更新,都将最新的版本拷贝到U盘上,再带到另一个地方更新那边的文件。

    但是这样做有许多问题:

    • 用U盘一个个拷贝太麻烦了
    • 万一哪天存着最新版本的设备坏了怎么办,难道要用另一个U盘备份?
    • 哪天我代码写错了,没有办法退回到上一个版本
    • 插上U盘 -> 拖动鼠标拷贝文件 -> 拔出U盘 这个操作太不(mei)优(you)雅(bi)了(ge)

    Linux 的创始人——Linus Torvalds 早就意识到了这个问题,于是用一个星期的时间写出了 Git,并且把它用在了 Linux 内核源码的版本控制上,真正的诠释了那句他自己说的千古名句:

    Talk is cheap, show me the code! --Linus Torvalds

    说来这是个版本控制系统,但其实我使用它回退版本的次数非常少,更多的是用来配合 Github 来远程协作的。

    所以说,如果没有更复杂的需求的话,Git 需要记的命令是非常少的,更重要的是对这个系统的理解。

    再说,作为一个学计算机的,Git 也是未来做项目时必备的生存技能。

    安装

    本来,我认为几乎所有的 Linux 发行版会自带 Git,但事实上很多发行版并不会自带。

    但是,我相信绝大部分发行版的 软件仓库/默认软件源 中都会有git,所以你可以用自己发行版的包管理器来安装 Git。

    如果你是 Windows,那么 快去用 Linux ! 可以在 https://git-scm.com/download/windows 这个地址下载。

    Mac 可以在 https://git-scm.com/download/mac 这里下载。

    基本命令

    由于 Windows 下自带的那个 Git GUI 对我来说就是个废物,作为每天用命令行 Git 的我上手后根本不知道如何使用,说是 GUI ,但对新手非常不友好。

    再加上 Windows 下的 Git Bash 是 Windows 下 Bash 模拟器的典范,所以这个系列只有命令行,没有 GUI。

    用户配置

    即使 Git 只有你一个人离线使用,你也要首先告诉 Git 你是谁,所以就有了下面这两句:

    git config --global user.name "dong628"  #名称
    git config --global user.email 1816750728@qq.com   #邮箱
    

    创建一个仓库

    仓库(Repository),可以看作是一个由 Git 管理的文件夹,有了仓库,Git 就可以跟踪其中的文件,记录版本变化。

    要想把一个文件夹变成一个 Git 仓库,只需要在这个文件夹中键入以下命令:

    git init
    

    在 Windows 下,如果打开了显示隐藏文件,那么在那个文件夹中应该可以看到 .git 目录,这是 Git 用来存放历史版本的地方。对于 GNU/Linux 系统,可以使用 ls -a 命令查找到这个文件夹

    Screenshot_20200821_095333.jpg

    当你建立好仓库后,使用 git status 命令可以查看这个仓库的状态

    Screenshot_20200821_100048.jpg

    添加追踪文件

    并不是文件夹中所有的文件都要被 Git 跟踪。事实上,即使你在这个文件夹中写了一堆文件,如果不运行任何命令,Git 是不会注意到这些文件的任何变化的,仓库也会是空空如也。

    当这个文件夹中新增了文件,Git 就会检测到这个文件没有被跟踪,从而在运行 git status 命令后给出这样的提示:

    Screenshot_20200821_100624.jpg

    就像这段文字的提示一样, git add 命令主要有两个作用:

    1. 将未跟踪的文件添加跟踪
    2. 将工作区的修改提交到暂存区

    其实1和2本质上是一样的,为此,要先来介绍一下 Git 中的暂存区域。

    暂存区,顾名思义,暂时存放文件的区域。一个 Git 仓库中有三个区域,分别时工作区、暂存区、版本库。其中,只有版本库存放了所有版本,工作区和暂存区都是只会存放一个版本的。其中,暂存区可以看作是一个存放着所有你 add 过的文件,并且可以随时把这些文件一次性打包,作为一个新版本放入版本库的。

    所以,当执行了 git add <文件名> 后,运行 git status 就会有这样的输出:

    Screenshot_20200821_102028.jpg

    可以看到,文件已经被 Git 追踪,如果不信,可以修改这个文件,再运行 git status 试试:

    Screenshot_20200821_102343.jpg

    可以看到,Git 已经检测到了文件的更改。

    当工作区和暂存区出现偏离

    当提交到暂存区的文件在工作去被修改时,Git 会检测到文件被修改了,并且给用户两个选择

    1. 将工作区的新文件提交到暂存区 ( git add命令)
    2. 将暂存区的文件恢复到工作区 ( git restore 命令)

    如果工作区的这个修改是你不小心改掉了一些什么东西,那就可以使用第二条命令来恢复工作区。

    如果这是一个正确的改动,并且你想要更新暂存区里的文件,那么可以使用第一条命令。

    但其实这两个命令都是具有危险性的,因为它们都会删除一些版本呢,那么有没有什么方法可以同时保留这两个版本呢?

    将暂存区的文件提交到仓库

    当你认为暂存区里的这些文件已经是一个成型的版本,需要保存起来以便回溯时,就需要将暂存区中的文件打包成一个版本,放入版本仓库。

    当遇到上面的情况,也就是工作区和暂存区发生了偏离,Git 只告诉你可以保存一个,但没有告诉你两个都要的方法。

    为此,我们可以使用下面的命令:

    git commit -m "<本次提交的注释>"
    git add test.cpp
    

    Screenshot_20200821_104620.jpg

    这样,我们成功地将暂存区里的版本提交到了版本库中,为此,你可以使用 git log 来查看版本库中存放的版本数据:

    Screenshot_20200821_104941.jpg

    -> to be continued...

  • 相关阅读:
    .net(关于字符串的相等问题[比较重要])
    .net(基本数据类型,枚举类型,枚举字符串的相互转化)
    如何安全的读入一个整数或者浮点数
    .net(数组)
    什么是EAI?
    PowerShell 入门
    sql server 2005 如何删除前几条记录或重复记录
    如何查看客户端的IP地址,机器名,MAC地址,登陆名等信息
    sql server 2005 几个常用的存储过程或函数
    ASP.NET 母版页的加载顺序
  • 原文地址:https://www.cnblogs.com/dong628/p/13545067.html
Copyright © 2020-2023  润新知