在Eclipse中使用Git

本文原文出自MCU on Eclipse网站,作者为Erich Styger,原文网址:https://mcuoneclipse.com/2018/09/30/tutorial-git-with-eclipse/。本人翻译了此篇文章,有些短语难以找到准确表达的中文词语,所以保持了原文。限于个人的知识局限性,如有不当之处欢迎交流。

 

软件开发领域有一些改变游戏规则的事情:当我开始使用VCS(版本控制系统)时,就有一个这样的事件:它改变了我如何保存和存储我的项目和设置。它甚至改变了我处理非软件相关项目(如文档或其他有价值的东西)的方式:我也开始将它们存储到VCS中。

Eclipse合作

简而言之,VCS

简而言之:VCS是一个数据库或允许我存储和检索文件的系统。它保留了历史记录,我可以及时返回以检索较早的状态或比较不同的状态。它在一种数据库中版本化项目或文件。在大多数情况下,这样的数据库由多个用户或开发人员使用,通过这种方式,系统能够合并不同开发人员的更改:它保留审计跟踪并备份所有更改。不使用VCS进行任何中型或大型项目,尤其是多个开发人员合作听起来像是对我自杀。如果您从未使用过版本控制系统,则可能需要开始使用版本控制系统。我使用了不同的VCScvssvngit),虽然我仍然在vcssvn中保留项目的历史原因,但我正在使用git来处理所有新东西。

如果您不熟悉VCSgit,我建议您查看本教程视频:https//git-scm.com/video/what-is-version-control

Git - 快速入门

Git项目已经由著名的Linus Torvalds的开始。它是一个现代的分布式版本控制系统。要安装git,请按照https://git-scm.com/downloads上的链接和教程进行操作

使用git有几个基本操作:

  • 添加(add:将文件添加到更改列表中
  • 提交(commit:将更改输入(本地)存储库
  • 推送(push:将本地存储库中的更改传输到远程存储库
  • 获取(pull:从远程存储库获取更改

默认情况下,始终存在本地存储库。需要远程存储库来共享内容,例如在GitHub上。

在Git Bash shell中,首先配置您的用户名和默认电子邮件地址:

git config --global user.name “John Doe”
git config --global user.email “ john.doe@company.com ”

Git配置

这就是我们配置所需的一切。

要创建一个新的git存储库,我使用

git init myGitRepo

在'init'之后创建具有该名称的存储库。

接下来,我在创建的文件夹中创建了一个readme.txt(我在下面使用nano,你可以使用任何文本编辑器):

cd myGitRepo
nano readme.txt

要将该文件添加到存储库,我使用:

git add readme.txt

然后使用以下命令将其提交到存储库:

git commit -m“自述文件的初始版本

将文件添加到存储库

而是在命令行上执行操作,您可以自由使用图形客户端,请参阅https://git-scm.com/downloads/guis

面向EclipseEgit客户端

我总是在命令行版本和Eclipse插件旁边安装GUI客户端。每个客户都有其优点和缺点,我正在使用免费的SourceTree。我的模型是:

  • 使用像SourceTree这样的GUI客户端来正常使用git
  • 使用命令行版本进行更高级的操作或自动化
  • 使用Eclipse插件处理Eclipse项目

我对Eclipse插件的偏好是' EGit ',为此我写了一篇文章如何将它安装到CodeWarrior。许多Eclipse发行版已经预装了一个git客户端,而NXP MCUXpresso IDE也附带了EGit。

否则,请从以下Eclipse Update站点(帮助>安装新软件)使用(或更新):http://download.eclipse.org/egit/updates

展望未来,我将展示如何使用Eclipse(NXP MCUXpresso IDE 10.2)与EGit。

Eclipse中的Git视图和仓库配置

在Eclipse中,我切换到Git透视图:

打开Git Perspective

从git的角度来看,我可以添加一个现有的存储库(例如我上面用shell创建的存储库):

添加现有存储库

然后浏览到存储库文件夹并添加它:

添加现有仓库

而是使用shell,我也可以用它来创建一个新的存储库:

创建新存储库

然后它会询问我的存储库文件夹名称:

新的eclipse git存储库

并将其添加到可用的存储库:

仓库列表

或者我可以从现有的存储库克隆,例如从GitHub克隆。为此,我使用'克隆':

克隆存储库

例如,我可以克隆并使用Gi​​tHub上的McuOnEclipse存储库:https://github.com/ErichStyger/mcuoneclipse.git

您将无权在GitHub上推送到该存储库。如果要对GitHub存储库进行更改:将它在GitHub克隆到您自己的存储库列表并使用您的存储库URL。

克隆McuOnEclipse

按next并选择所需的分支(如果有)。

选择分支

然后指定(新/空)目录名称克隆存储库的位置:

本地目的地

按Finish,它将下载存储库内容,这可能需要一段时间,具体取决于存储库中的数据。

将项目添加到存储库

配置存储库后,我可以将现有项目添加到存储库。右键单击项目,然后选择Team> Share Project ...

分享项目

选择要使用的VCS:

选择VCS

选择要使用的存储库,然后按Finish:

选定的存储库

忽略文件

Git使用.gitignore文件来过滤(隐藏)不应该最终存储在存储库中的文件或文件夹。

Git将要忽略的文件和文件夹列表存储到名为.gitignore的文件中。默认情况下,Project Explorer视图会隐藏以点开头的所有文件。要显示它们,请使用“过滤器和自定义”菜单:

过滤和定制

然后取消选中* .resources设置:

过滤器

有了这个,我可以在Eclipse中编辑.gitignore文件:

默认.gitignore文件

该文件从顶部到底部进行处理,#用于启动注释行。

作为一般规则:忽略派生或生成的所有内容,因为它很容易在存储库中创建冲突。

有关CodeWarrior和Processor Expert要忽略的事项列表,请参阅https://mcuoneclipse.com/2013/03/29/version-control-with-processor-expert-projects/

更新:建议忽略项目的.settings文件夹(请参阅本文评论部分中的讨论)。.settings文件夹包含具有本地插件设置的XML文件,并且特定于用户。所以不要把那个文件夹到版本控制系统。

对于MCUXpresso IDE和SDK项目,它非常简单:只需要​​忽略带有生成的make和目标文件的输出文件夹,通常将其命名为“ Debug ”和/或“ Release ”。从上面的.gitignore可以看出,Eclipse已经将它添加到列表中,所以我们没关系:-)。

承诺

在上一步中,我已将项目添加到更改列表中。但它尚未存储在存储库中。为此,我需要做一个提交。随着项目的添加,我现在在Team菜单中有更多可用的操作:

扩展团队菜单

使用'Commit ...'菜单项,我得到一个Git Staging视图:

Git Staging

左上方区域显示所有更改。我必须使用拖放或使用该工具栏中的“+”和“++”图标将它们放入左下区域并添加提交消息:

准备提交

然后我可以提交(在本地存储库中进行更改并稍后推送)或者通过推送到远程存储库来进行提交。

我更喜欢做较小的提交,然后再推它们。对于本地(非共享)存储库,当推送到远程存储库时,不需要/不可能推送。

推送,获取和比较

团队菜单中提供了推送操作:

推送

在同一个菜单中,我找到了拉动作(从存储库中获取更改)。

要比较更改,请双击该文件,然后打开Eclipse diff视图:

比较变化

Git导入

另一个很酷的事情是我可以将项目从git导入我的工作区。我使用文件菜单中的导入项:

导入

然后从Git中选择导入:

Git导入项目

选择存储库源:

选择存储库源

如果您克隆了McuOnEclipse存储库,则可以选择该存储库中的一个或任何存储库:

选择git仓库

然后选择要导入项目的文件夹:

选择要导入的项目

这样我就可以轻松地从任何存储库导入项目:-)。

与Eclipse一样,有很多方法可以做一件事。导入项目的另一种方法是从Git Repositories视图:

导入Git项目

更多功能

可以自由探索Eclipse中的更多EGit功能。我建议通过Git透视默认视图。例如“历史记录”视图

Git历史视图

Git历史

摘要

带有EGit插件的Eclipse可以轻松使用git版本控制系统。如果不熟悉版本控制系统需要一些练习。但这个事情很容易解决,互联网上有很多教程和视频。

链接

  • git版本控制系统软件:https//git-scm.com/
  • Subversionsvn):https//subversion.apache.org/
  • 并发版本系统(cvs):https//en.wikipedia.org/wiki/Concurrent_Versions_System
  • 使用处理器专家项目进行版本控制:https//mcuoneclipse.com/2013/03/29/version-control-with-processor-expert-projects/

欢迎关注:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言学习及应用笔记之三:C语言const关键字及其使用

在C语言程序中,const关键字也是经常会用到的一个关键字,那么使用const关键字的目的是什么呢?事实上,在程序中使用const关键字的主要目的就是为了向使用者传递设计者的一些意图。 事实上,无论我们是使用const关键字声明…

nlp cs224n 学习笔记1 Introduction and Word Vectors

注:个人笔记,价值有限,不建议逗留。 word embedding 的意义和目的? 通过一种映射,将自然语言中的单词,嵌入到n维欧式空间中,得到可以用数学语言表达并用计算机计算的“词向量”。 同时我们希望…

Modbus协议栈开发笔记之一:实现功能的基本设计

Modbus作为开放式的工业通讯协议,在各种工业设备中应用极其广泛。本人也使用Modbus通讯很多年了,或者用现成的,或者针对具体应用开发,一直以来都想要开发一个比较通用的协议栈能在后续的项目中复用,而不必每次都写一遍…

天池CV学习赛:街景字符识别-思路与上分技巧汇总

Datawhale 和 天池 合作的零基础入门CV - 街景字符编码识别比赛的正式赛已经结束。本文对一些比赛思路和上分技巧进行了汇总和整理,希望对大家深入学习CV能够有帮助。 本文分为以下几部分: 如何优化官方baseline的效果? 其它解题思路的整理…

Modbus协议栈开发笔记之二:Modbus消息帧的生成

前面我们已经对Modbus的基本事务作了说明,也据此设计了我们将要实现的主从站的操作流程。这其中与Modbus直接相关的就是Modbus消息帧的生成。Modbus消息帧也是实现Modbus通讯协议的根本。 1、Modbus消息帧分析 MODBUS协议在不同的物理链路上的消息帧有一些差异&am…

动手学CV-目标检测入门教程:基本概念

3.1 目标检测基本概念 本文来自开源组织 DataWhale 🐳 CV小组创作的目标检测入门教程。 对应开源项目 《动手学CV-Pytorch》 的第3章的内容,教程中涉及的代码也可以在项目中找到,后续会持续更新更多的优质内容,欢迎⭐️。 如果使…

动手学CV-目标检测入门教程2:VOC数据集

3.2 目标检测数据集VOC 本文来自开源组织 DataWhale 🐳 CV小组创作的目标检测入门教程。 对应开源项目 《动手学CV-Pytorch》 的第3章的内容,教程中涉及的代码也可以在项目中找到,后续会持续更新更多的优质内容,欢迎⭐️。 如果…

C语言学习及应用笔记之四:C语言volatile关键字及其使用

在C语言中,还有一个并不经常使用但却非常有用的关键字volatile。那么使用volatile关键字究竟能干什么呢?接下来我将就此问题进行讨论。 一个使用volatile关键字定义变量,其实就是告诉编译系统这变量可能会被意想不到地改变。那么编译时&…

Modbus协议栈开发笔记之三:Modbus TCP Server开发

在完成了前面的工作后,我们就可以实现有针对性的应用了,首先我们来实现Modbus TCP的服务器端应用。当然我们不是做具体的应用,而是对Modbus TCP的服务器端应用进行封装以供有需要时调用。 这里我们不涉及TCP的协议,这部分与Modbu…

动手学CV-目标检测入门教程3:锚框(anchor)

3.3 锚框 or 先验框 本文来自开源组织 DataWhale 🐳 CV小组创作的目标检测入门教程。 对应开源项目 《动手学CV-Pytorch》 的第3章的内容,教程中涉及的代码也可以在项目中找到,后续会持续更新更多的优质内容,欢迎⭐️。 如果使…

动手学CV-目标检测入门教程4:模型结构

3.4 模型结构 本文来自开源组织 DataWhale 🐳 CV小组创作的目标检测入门教程。 对应开源项目 《动手学CV-Pytorch》 的第3章的内容,教程中涉及的代码也可以在项目中找到,后续会持续更新更多的优质内容,欢迎⭐️。 如果使用我们…

PID控制器开发笔记之十二:模糊PID控制器的实现

在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题。模糊PID控制器是将模糊算法与PID控制参数的自整定相结合的一种控…

动手学CV-目标检测入门教程5:损失函数

3.5 损失函数 本文来自开源组织 DataWhale 🐳 CV小组创作的目标检测入门教程。 对应开源项目 《动手学CV-Pytorch》 的第3章的内容,教程中涉及的代码也可以在项目中找到,后续会持续更新更多的优质内容,欢迎⭐️。 如果使用我们…

Modbus协议栈开发笔记之四:Modbus TCP Client开发

这一次我们封装Modbus TCP Client应用。同样的我们也不是做具体的应用,而是实现TCP客户端的基本功能。我们将TCP客户端的功能封装为函数,以便在开发具体应用时调用。 对于TCP客户端我们主要实现的功能有两个:其一是生成访问TCP服务器的命令&…

动手学CV-目标检测入门教程6:训练与测试

3.6、训练与测试 本文来自开源组织 DataWhale 🐳 CV小组创作的目标检测入门教程。 对应开源项目 《动手学CV-Pytorch》 的第3章的内容,教程中涉及的代码也可以在项目中找到,后续会持续更新更多的优质内容,欢迎⭐️。 如果使用我…

PC软件开发技术之一:在WinCC中通过VBS操作SQL Server2005

在项目中需要在一定条件满足时,保存一些数据到数据库中,并可根据条件查询。考虑到WinCC6.2以后采用的就是SQL Server2005数据库,所以直接利用该数据库即可,通过SQL Server Management Studio(SSMS)可以创建…

K 近邻算法(KNN)与KD 树实现

KD树节点 /// <summary>/// &#xff2b;&#xff24;树节点/// /2016/4/1安晟添加/// </summary>[Serializable]public class KDTreeNode{/// <summary>/// 获取或设置节点的空间坐标/// </summary>public double[] Position { get; set; }/// <…

PC软件开发技术之二:用C#开发基于自动化接口的OPC客户端

OPC全称是Object Linking and Embedding&#xff08;OLE&#xff09; for Process Control&#xff0c;它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁。OPC作为一整套接口、属性和方法的协议标准集&#xff0c;与具体的开发语言没有关系。 1、OPC客户端接口方…

标记符控制的分水岭算法原理及matlab实现

-------------------------------------------------------------------------------------------------------------------- 附录A 教程【3】给出的matlab源码&#xff0c;附详细注释 function [ ] MarkerControlled_Watershed_tutorial( ) %标记符控制的分水岭算法教程 …

PC软件开发技术之三:C#操作SQLite数据库

我们在开发应用是经常会需要用到一些数据的存储&#xff0c;存储的方式有多种&#xff0c;使用数据库是一种比较受大家欢迎的方式。但是对于一些小型的应用&#xff0c;如一些移动APP&#xff0c;通常的数据库过于庞大&#xff0c;而轻便的SQLite则能解决这一问题。不但操作方便…