Git初使用

什么是Git

Git是最初由Linus Torvalds开发的开源版本控制系统,同时也是当前最为流行、最为先进的版本控制系统之一。所谓版本控制即记录一个或多个文件的内容变化,以便于对特定时期的内容进行查阅或者更改。常用的版本控制系统除Git外,还有SVN、CVS等。

第一次使用

安装GIT

Linux

Linux各发行版基本上都可以使用包管理工具安装Git,例如在Debian/Ubuntu中使用apt-get或Fedora中使用yum安装Git。

# Debian / Ubuntu
$ sudo apt-get install git
# Fedora
$ sudo yum install git

更多在Linux中安装Git的方法可见Git for Linux

除直接使用二进制程序安装外,还可以下载Git的源码编译。Git的源码可于GitHub上获得。

Mac OS X

在Mac OS X下安装Git最简便的方法是直接安装XCode Command Line Tools,其安装方法是在首次使用的情况下在终端(Terminal)使用git命令,便会跳出提示安装的界面。通过XCode Command Line Tools安装最为便利,但其通常不是最新版本。若需要安装最新版本的Git,可在Git for Mac获取。在安装了homebrew后,也可使用brew install git安装。

Windows

在Windows环境下,可直接前往Git for Windows下载,它通常包含Git Bash和Git GUI两个工具。除使用Git for Windows外,还可使用GitHub Desktop或SourceTree等图形化工具。

配置

Git在使用前,需要设置用户名及邮箱,且之后每一次的提交都会用到这些信息。Git包括了一个config命令来设置各项配置,设置的配置信息根据不同的选项存储于不同的位置。通过git config命令设置用户名和邮箱的方式如下。

$ git config user.name "Zhang San"
$ git config user.email "zhangsan@example.com"

采用上述命令将为当前项目设置用户名和邮箱信息,除此以外git config命令通常还使用两个选项,分别是--system--global,它们分别是为当前系统所有用户设置配置信息及为当前用户设置配置信息。下面说明了不同的选项的配置文件存储的位置

  1. /etc/gitconfig: 带有--global选项时,为系统中所有的用户设置配置。
  2. ~/.gitconfig: 带有--system选项时,为当前用户设置配置,文件存在与用户主目录下。
  3. .git/config: 不带任何选项时为当前项目设置配置,存在与项目目录下。

本地新建

在安装Git之后,就可以在本地新建一个Git仓库了。本地新建的Git仓库可以建立在空的目录中,也可以建立在一个正在进行的项目中。使用git init命令便可以在本地建立一个Git仓库。

$ git init

在使用init完成初始化之后,会在目录下生成一个隐藏的.git文件夹,该文件夹存放了Git仓库的一些必要信息。在使用简单的一个init命令之后就得到了一个Git仓库可以继续进行之后的操作了。

远程仓库

在本地新建一个仓库往往可能只是一些个人项目,而更多的情况下会接触到团队合作项目或是GitHub上的开源项目等,这时候就需要使用git clone命令克隆现有的仓库到本地。clone命令的用法为git clone [url]。例如现需要保存我的博客源码到本地,就可以使用下列命令将其克隆。

$ git clone https://github.com/ghosind/ghosind.github.io.git

Git支持多种的协议,除上述的http/https外,还支持git://协议以及SSH。在实际使用的过程中可以通过具体的情况选择使用的协议。

在已存在的目录中初始化远程仓库

使用git clone命令将会自动创建与仓库名相同的目录,在已存在的目录中初始化仓库便不能直接使用git clone。在已存在的目录中,需要先使用git init命令将该目录初始化,再使用git remote add [remote-name] [url]添加远程仓库。默认情况下,remote-name将会是origin,它是Git仓库服务器的默认名称。

$ git init
$ git remote add origin https://github.com/ghosind/ghosind.github.io.git

在初始化远程仓库后,可以使用git fetch [remote-name]获取远程仓库中的数据(如分支引用)。执行完成后,Git已经拉取所有自上一次获取后修改的所有数据(像本节中第一次使用将会拉取所有数据),但不会将其合并入当前修改中,如空目录初始化并执行后该目录下仅有.git目录。

在执行git clone命令后将会克隆仓库中的所有文件至本地,但使用上述命令后仍未将文件获取至本地,这时候就需要使用git pull [remote-name] [branch-name]命令将远程仓库中的数据合并至本地仓库当前所在的仓库中。在这里便提及到了分支的概念,但本文主要是面向于Git入门,将不提及分支的具体内容。在Git中,默认情况下每个仓库都拥有一个master分支,即该仓库的主分支。在后续的Git使用中,git pull命令也是一个非常常用的命令,使用它可以进行获取远程仓库中的修改、分支合并等操作。

$ git pull origin master

第一次提交

在建立仓库后,就可以进行任何需要的操作了。例如在编写了一个hello.c文件,保存在Git仓库的目录下,并且准备提交到仓库中,就需要进行一些操作。

首先,为了知道目录下具体有哪些文件发生了修改(假设目录中不仅只存在hello.c文件),需要使用git status命令检查当前的状态。下面分别是没有任何修改和有修改时status命令的输出。

# 无修改
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean

# 添加了hello.c文件
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.c
nothing added to commit but untracked files present (use "git add" to track)

在了解当前状态后,便可以使用add命令跟踪(track)一个文件。跟踪的文件指的是被纳入版本控制的文件,一个新生成的文件在被跟踪后才能使用Git进行版本控制。例如跟踪上面添加的hello.c文件。在文件被跟踪后,使用status命令查看当前状态。

$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        new file:   hello.c

在完成了本次的修改后,就可以提交修改至仓库中。使用commit命令可以创建一次提交(commit),直接使用git commit命令将会打开文本编辑器,其中会有本次提交包括的修改(可以删除,但保留可以更清晰地了解修改),而你需要做的事是在第一行空白的地方输入本次提交的说明。

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
#       new file:   hello.c
#

但使用commit命令每次都会打开文本编辑器,此步骤略显麻烦,于是便可使用-m选项,将提交的信息和命令放在同一行中。至此,便完成了一次的提交。若是使用远程的仓库,除上述步骤外,还需要将提交推送到远程仓库,便需要使用push命令。push命令的格式为git push [remote-name] [branch-name]。下面是一个完整的提交过程示例。

$ git add hello.c
$ git commit -m "hello world"
$ git push origin master

不小心暂存了不需要的修改

使用Git的过程中,难免手误add不需要的修改到暂存区。使用status命令可以发现,输出的信息提示可以使用reset命令取消暂存指定文件。例如在项目中加入了一个临时文件1.c,而且还不小心将其加入了暂存区,于是就可以使用下面的命令将其从从暂存区移出。

$ git reset HEAD 1.c

其它常用操作

除添加/修改新文件外,往往还可能需要一些其它的操作,这是就需要除add外的其它命令。例如使用rm命令删除文件(准确的说应该是不再跟踪该文件),或是使用mv命令移动/重命名文件。

另外,使用log命令可以查看提交的历史记录,它的输出包括了提交的SHA值、作者的名字、邮箱、时间以及说明。

结束语

在本文中只是初步提到如何使用Git,主要还是在于本地仓库的基本使用,还没提及许多更为强大的功能,例如Git强大的分支模型。有兴趣对Git进行深入学习可以前往Git官网下载Pro Git或者参考其它的资料。

参考资料

  • Scott Chacon, Ben Straub. Pro Git.
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值