Git之版本控制工具进阶

在上一篇文章中,学习了Git的基本用法,包括安装Git、创建代码仓库、提交本地代码。这篇文章接着学习更多的使用技巧


准备工作

所谓的准备工作,就是要给一个项目创建代码仓库,这里选择ProviderTest项目中创建,打开Git Bash,进入到该项目的根目录下面,执行git init 命令。准备工作搞定。


1.忽略文件

提交文件时,需要思考的是是不是需要将所有的文件都加入到版本控制当中。

Git提供了一种可配性很强的机制来允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的根目录下是否存在一个名为.gitignore的文件,如果存在的话就去一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。注意.gitignore中指定的文件或目录是可以使用“*”通配符的。

a.在ProviderTest项目的根目录下创建一个名为.gitignore的文件,然后编辑这个文件中的内容,


这样就表示把bin目录和gen目录下的所有文件都忽略掉,从而使得它们不会加入到版本控制当中。

b.用add命令将所有的文件进行添加  git add . 

c.用commit命令提交代码 git commit -m "First commit."


2.查看修改内容

查看文件修改情况十分简单,使用status命令即可,在项目的根目录下面输入如下命令

git status

然后Git会提示目前项目中没有任何提交的文件,这是因为刚刚提交过项目,如果这个时候修改MainActivity.java文件中的部分代码,并重新输入 git status后则显示为:


注意到Git提醒我们MainActivity.java这个文件已经发生更改,如果要查看更改的内容,需要借助diff命令。

git diff

这样就可以 查看所有文件的更改内容,如果只想查看MainActivity.java的更改内容,使用如下命令:

git diff  src/com/example/providertest/MainActivity.java


3.撤销未提交的修改

有的时候我们代码可能会写的过于草率,以至于原本正常的功能,结果反倒被我们改出了问题,此时,稍安勿躁,只要代码未提交,所有修改的内容都是可以撤销的

我们在上面修改了MainActivity.java的部分代码,现在想要撤销,则需要使用checkout命令,

git checkout src/com/example/providertest/MainActivity.java

执行该命令后,该文件所有的修改都被撤销,此时可以用git status 命令检验一下


可以看到,当前项目中没有任何可提交的文件,说明撤销操作成功了。

不过这种撤销方式只适用于那些还没有执行过add 命令的文件,如果某个文件已经被添加过了,这种方式就无法撤销其更改内容,现在做个测试

首先修改MainActivity.java部分代码,然后输入命令 git add . 这样就把所有修改的文件都进行了添加,输入git status检查,


再执行一遍checkout命令,你会发现MainActivity仍然处于添加状态,被修改的内容无法撤销,面对这种情况,我们需要对已添加的文件先对其取消添加,然后才可以撤回提交。

取消添加使用的是reset命令,

git reset HEAD src/com/example/providertest/MainActivityl.java

 运行git status,发现MainActivity.java文件重新变成未添加状态,此时使用checkout命令来将修改的内容进行撤销。


4.查看提交记录

a.使用log命令查看所有的提交信息,git log

b.当提交记录非常多时,我们需要其中的一条提交记录信息,可以在命令中指定该记录的id,并加上-1表示我们只想看到一行记录,如下

git log 2e7c0547af28cc1e9f303a4a1126fddbb704281b -1 

而如果想要查看这条提交记录具体修改了什么内容,可以在命令中加入 -p

git log 2e7c0547af28cc1e9f303a4a1126fddbb704281b -1  -p

查询结果如下,减号代表删除部分,加号代表添加的部分。



深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 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、付费专栏及课程。

余额充值