【Linux系统编程】初步运用git工具

介绍:

        使用git之前首先要先认识gitee/github,gitee/github是一个远程仓库网站。git是平台专门开发的一个操控工具,是一个开源的分布式版本控制系统,我们使用git工具来与gitee/github来取得联系。

git的推送使用:

        git既然是一个工具,我们首先要查看系统下是否安装了它:

[zhu@zhujunhao ~]$ which git
/usr/bin/git   //出现此路径表示已经安装了git工具

        若没有安装,要使用yum进行安装。安装命令如下,这里我们普通用户使用sudo提权操作

[zhu@zhujunhao ~]$ sudo yum install -y git

        下面,我们要先登入gitee/github网站创建仓库,这里我们使用gitee网站。在创建仓库时,注意要初始化仓库语言的选择和 .gitignore 文件的选择。语言的选择是根据自己用什么语言写的程序来进行选择,而 .gitignore 文件是专门用来进行过滤掉不想添加文件的后缀名,它会过滤掉里面写的特定文件后缀名。比如我们只想添加C++的源文件,只需选择此模板下的c++即可。其它的操作若不是用于多人开发大项目或工程的研发系统等使用只需按照以下的勾选即可。

        仓库创建好之后,要先将仓库克隆到本地机器下,这里要克隆远程仓库中 HTTPS 的链接

        然后在命令行中使用 git 指令进行克隆,指令为 git clone [HTTPS仓库链接],如下:

[zhu@zhujunhao git]$ git clone https://gitee.com/zhujunhaochengxuyuan/c-application-55.git

//出现下面类似的内容表示克隆成功
Cloning into 'c-application-55'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (5/5), done.

        克隆远端仓库后,将会在当前目录下出现一个仓库目录,此目录就是远端仓库。上面我们克隆的远端仓库为 c-application-55,里面有许多git和仓库必要的使用文件和工具,这里先不做重点介绍。

[zhu@zhujunhao git]$ ll
total 4
drwxrwxr-x 3 zhu zhu 4096 Dec 10 08:38 c-application-55 

[zhu@zhujunhao git]$ cd c-application-55
[zhu@zhujunhao c-application-55]$ ll -a
total 24
drwxrwxr-x 3 zhu zhu 4096 Dec 10 08:38 .
drwxrwxr-x 3 zhu zhu 4096 Dec 10 08:38 ..
drwxrwxr-x 8 zhu zhu 4096 Dec 10 08:38 .git
-rw-rw-r-- 1 zhu zhu  270 Dec 10 08:38 .gitignore
-rw-rw-r-- 1 zhu zhu  819 Dec 10 08:38 README.en.md
-rw-rw-r-- 1 zhu zhu  908 Dec 10 08:38 README.md

        下面我们使用git工具来把工程推送到远端仓库。

        推送工程目录必要使用的三个方法:add、commit、push。首先,要用add将工程目录增添到仓库中的暂存区进行临时保存,这里还没有真正意义上放到仓库中,然后,使用commit提交到本地仓库,这里才算把工程目录放入到本地仓库中,但这里只是存入到本地仓库,并没有放入到远程仓库中,也就是说gitee网站中还没有此目录,最后push将其推送到远端网站,这时才算正真意义上的结束。

        首先,我们把工程目录放入到本地仓库中,然后,使用三个必要方法进行推送。这里需注意的是在推送过程中,当用户第一次使用git工具时会出现以下信息。

        这里的意思是让你输入个人注册的邮箱和用户名,如同第一次使用时的注册。这时只需要输入上面红色区域中的对应指令的个人邮件和姓名即可。如下:

[zhu@zhujunhao c-application-55]$ git config --global user.email "个人注册时的邮箱"
[zhu@zhujunhao c-application-55]$ git config --global user.name "个人注册的姓名"

        下面,我们正式开始推送,其中具体的使用和注意事项如下:

//首先把目录process放入到本地仓库c-application-55中

[zhu@zhujunhao c-application-55]$ cp ../../process . -r  
[zhu@zhujunhao c-application-55]$ ll
total 12
drwxrwxr-x 2 zhu zhu 4096 Dec 10 08:59 process
-rw-rw-r-- 1 zhu zhu  819 Dec 10 08:38 README.en.md
-rw-rw-r-- 1 zhu zhu  908 Dec 10 08:38 README.md

//add增添到当前目录仓库中的暂存区中

[zhu@zhujunhao c-application-55]$ git add . //add当前目录下所有内容,这里可指定文件

//commit推送本地,这里我们说明标题为"Linux第一次提交进度条改版,测试通过"
[zhu@zhujunhao c-application-55]$ git commit -m "Linux第一次提交进度条改版,测试通过"

[master 3c8e71a] Linux第一次提交进度条改版,测试通过
 4 files changed, 102 insertions(+)
 create mode 100644 process/main.cpp
 create mode 100644 process/makefile
 create mode 100644 process/process.cpp
 create mode 100644 process/process.h

//最后push推送远端仓库
[zhu@zhujunhao c-application-55]$ git push

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Username for 'https://gitee.com':   //这里要让你输入在gitee注册的账号
Password for 'https://19836143735@gitee.com':   //这里要让你输入注册的密码

//若输入错误,将会出现类似于下面的信息,表示错误

fatal: Authentication failed for 'https://gitee.com/zhujunhaochengxuyuan/c-application-55.git/'

//输入成功后将会出现有关下面类似的信息,表示成功推送

Counting objects: 8, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 1.61 KiB | 0 bytes/s, done.
Total 7 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/zhujunhaochengxuyuan/c-application-55.git
   249e5a3..3c8e71a  master -> master

git的指令运用:

        当我们提交远端仓库后,可在仓库目录下使用git log查看历史提交记录,注意,这里只能在本地仓库目录下才可以使用 git log 查看,在其它目录下使用统统失败。

[zhu@zhujunhao c-application-55]$ git log
commit 3c8e71aad65802c4b8b5c749874ae23a31b6259f
Author: /*.......这里显示的是作者信息....*/
Date:   Sun Dec 10 09:08:16 2023 +0800

    Linux第一次提交进度条改版,测试通过

commit 249e5a32f815dec545799255be464e382ac53cca
Author: /*.......这里显示的是作者信息....*/
Date:   Sun Dec 10 00:37:36 2023 +0000

    Initial commit

        下面要说明一点,当我们在本地仓库目录下对仓库目录进行操作修改时,不会影响远程仓库的内容,也就是说本地仓库和远程仓库之间虽然存在某些关联,但是没有必要联系。这时,若想修改远程仓库内容,就要重新执行 add、commit、push 重新推送。当多人一起开发时,有时可能会出现提交冲突等,此时需使用 git pull 指令获取最新的代码更新,并将其合并到本地仓库中,以确保本地代码与远程仓库保持同步。

[zhu@zhujunhao c-application-55]$ git pull

//已经同步
Already up-to-date.   

       git指令中 git status 命令可查看当前Git仓库的状态,即显示哪些文件被修改、哪些文件被暂存、哪些文件未被跟踪等信息。通过使用git status,开发者可以随时了解项目的最新变动,避免因不同分支的代码冲突而引发的问题。

[zhu@zhujunhao c-application-55]$ git status

//此时的仓库状态没有任何变动
# On branch master
nothing to commit, working directory clean

        上面还说到,当我们使用add只是将特定的目录或文件进行暂存,若想将暂存文件或目录全部去除,直接使用 git reset 指令。若只想将某个特定的暂存文件或目录移回工作区,可以使用 git reset [要移除的文件或目录]                       

[zhu@zhujunhao c-application-55]$ git add test     //add文件test

[zhu@zhujunhao c-application-55]$ git status  

//可发现当前仓库状态已经add推送
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    new file:   test
#
[zhu@zhujunhao c-application-55]$ git reset test   //移除test文件
[zhu@zhujunhao c-application-55]$ git status 

//发现移除成功
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    test
nothing added to commit but untracked files present (use "git add" to track)

.gitignore文件的使用:

        在 .gitignore 文件中,我们也可自己进行控制过滤掉不需要的文件。当自己需要传送某些后缀名的文件时,只需在.gitignore 文件中找到对应文件后缀名语句 “ *.[指定后缀名] ” 将其删除即可。若不想增添特定后缀名的文件,在.gitignore文件中输入 “ *.[指定后缀名] ” 即可。

[zhu@zhujunhao c-application-55]$ vim .gitignore
[zhu@zhujunhao c-application-55]$ cat .gitignore
*.phh  //增添的内容,过滤掉以.phh为后缀名的文件,当删除此语时,将正常推送 

...........

        这里要注意的是,不要忽略要过滤文件前面的通配符符号' * ',若忽略了通配符过滤功能将不会生效。

        最后,要说明的是,Linux中的git指令在我们Windows系统下其实也可以运用起来,只需在对应的仓库文件夹中打开窗口或打开相关指令界面进行输入指令操作即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

六:Day06_Spring Security02

一、访问控制&#xff08;授权&#xff09; 1. 基于资源访问控制 查询用户的权限。 访问资源时判断用户是否具有指定的权限。 1.1 修改UserServiceImpl Service public class UserServiceImpl implements UserDetailsService {Autowiredprivate UserMapper userMapper;Aut…

JS数组与它的42个方法

前言 数组在js中作为一个非常重要的类型之一&#xff0c;在我们对数据处理&#xff0c;存储数据&#xff0c;条件渲染的时候经常会用到&#xff0c;所以随着ES的不断更新&#xff0c;数组的方法也是越来越多&#xff0c;也让我们使用数组对数据操作的时候&#xff0c;越来越简…

Python中的继承:概念、用法与示例

目录 一、引言 二、继承的概念 三、继承的用法 1、继承父类的属性和方法 2、添加新的属性和方法 3、覆盖父类的方法 四、示例代码展示 五、继承中的多态性 六、继承中的封装和抽象 七、继承中的多重继承 总结 一、引言 面向对象编程&#xff08;OOP&#xff09;是一…

构建VREP和MATLAB联合仿真实验平台,控制机械臂末端按照固定轨迹移动

构建VREP和MATLAB联合仿真实验平台&#xff0c;控制机械臂末端按照固定轨迹移动。主要工作如下&#xff1a; &#xff08;1&#xff09;solidworks构建机械臂模型&#xff1b; &#xff08;2&#xff09;将solidworks中构建的模型导入VREP中建立机械臂的多体动力学模型&#xf…

10 个顶级 iPhone 数据恢复软件工具评测

很多事情都可能导致 iPhone 数据丢失&#xff1a;iOS 更新失败、越狱错误、解锁问题等。如果您遇到类似情况并且想要访问您的文件&#xff0c;通常最好的解决方案是使用数据恢复工具。由于研究市场上可用的工具可能会花费您大量的时间&#xff08;在尝试从 iPhone 恢复数据时&a…

二、Java基础语法

day02 - Java基础语法 1. 注释 ​ 注释是对代码的解释和说明文字。 Java中的注释分为三种&#xff1a; 单行注释&#xff1a; // 这是单行注释文字多行注释&#xff1a; /* 这是多行注释文字 这是多行注释文字 这是多行注释文字 */ 注意&#xff1a;多行注释不能嵌套使用…

Java 入门第四篇 集合

Java 入门第四篇 集合 一&#xff0c;什么是集合 在Java中&#xff0c;集合&#xff08;Collection&#xff09;是一种用于存储和操作一组对象的容器类。它提供了一系列的方法和功能&#xff0c;用于方便地管理和操作对象的集合。集合框架是Java中非常重要和常用的一部分&…

番茄病虫害检测系统:融合感受野注意力卷积(RFAConv)改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 番茄是全球重要的蔬菜作物之一&#xff0c;具有广泛的经济和营养价值。然而&#xff0c;番茄病虫害的严重威胁导致了产量和质量的损失。因此&#xff0c;开发一种…

hive聚合函数之排序

1 全局排序&#xff08;Order By&#xff09; Order By&#xff1a;全局排序&#xff0c;只有一个Reduce。 (1&#xff09;.使用Order By子句排序 asc&#xff08;ascend&#xff09;&#xff1a;升序&#xff08;默认&#xff09; desc&#xff08;descend&#xff09;&#…

C#- 代理模式(静态)

与装饰器模式类似&#xff0c;只继承接口&#xff1b; 示例代码&#xff1a; interface IStudent {public void GetInfo(); } class Student : IStudent {public void GetInfo(){Console.WriteLine("上小学中。。。");} } class ProxyStudent : IStudent {private …

纸质表格扫描转Excel的利器,让您省钱省劲

将纸质表格扫描到电脑Excel上是一种快捷而高效的数字化处理方法&#xff0c;使得数据可以方便地进行编辑、分析和共享。本文将介绍几种常用的方法来完成这项任务。 第一种方法是使用扫描仪。现代扫描仪具备较高的分辨率和颜色还原能力&#xff0c;可以将纸质表格转化为高质量的…

操作系统原理-作业三-存储器

某页式虚拟存储管理系统中&#xff0c;页面大小为 2KB &#xff0c;某一进程分配到的内存块数为 3 &#xff0c;并按下列地址顺序引用内存单元&#xff1a; 2531 、 6632 、 4140 、 3584 、 2892 、 5743 、 1700 、 2148 、 6940、 4345 、 3209 、 0732 、 6202 、 4541 。…

SAP ABAP 使用cl_md_bp_maintain=>maintain更新BP税号CN0的数据,更新结果都会变成CN5类型问题处理

SAP ABAP 使用cl_md_bp_maintain>maintain更新BP税号CN0的数据&#xff0c;更新结果都会变成CN5类型&#xff0c;CN1类型一切正常。 1、BP税号 2、跟踪方法中代码 查看底层逻辑&#xff0c;发现CN0都被强制替换成CN5了&#xff0c;BP GUI界面还能正常使用CN0. 查询NOTES&a…

机器学习:从概念到应用

机器学习&#xff1a;从概念到应用 一、引言 随着科技的飞速发展&#xff0c;人工智能已经渗透到我们生活的方方面面。作为人工智能领域的一个重要分支&#xff0c;机器学习正在改变我们的世界。它通过让计算机从数据中学习&#xff0c;实现自我优化和改进&#xff0c;为各行…

JS轮询任务查询订单退款状态

出现问题&#xff1a; 因为订单的支付不是普通的微信支付&#xff0c;是第三方支付&#xff0c;而且由于该三方支付自己内部设置的一些情况&#xff0c;导致退款的时候&#xff0c;发起了退款申请&#xff0c;但是会在15~20秒左右&#xff0c;才会返回结果&#xff0c;不像微信…

ISCTF2023 Reverse方向 WP

文章目录 ReversecrackmeEasyRebabyReeasy_z3FloweyRSAeasy_flower_teamfx_rez3_revengeWHERE Reverse crackme 、 加了UPX壳&#xff0c;可以看到EP Section处UPX标识被修改了 用WinHex修改 之后UPX脱壳 得到flag。 EasyRe 逆向一下&#xff0c;先逆序&#xff0c;再做一些…

台阶仪在大型基板应用有哪些

探针式轮廓仪&#xff08;台阶仪&#xff09;是一种用于测量物体表面轮廓和形状的仪器。在大型基板应用中&#xff0c;它可能被用于检测和分析半导体器件、平板显示屏、光伏电池板等大尺寸基板上的微小结构和形状。这样的测量对于确保生产质量、提高制造效率和优化工艺非常重要…

cfa一级考生复习经验分享系列(三)

从总成绩可以看出&#xff0c;位于90%水平之上&#xff0c;且置信区间全体均高于90%线。 从各科目成绩可以看出&#xff0c;所有科目均位于90%线上或高于90%线&#xff0c;其中&#xff0c;另类与衍生、公司金额、经济学、权益投资、固定收益、财报分析表现较好&#xff0c;目测…

张驰课堂:在线六西格玛认证,成就个人职业发展

随着数字化学习平台的兴起&#xff0c;六西格玛的学习方式更加灵活。以下是线上学习平台与传统面授培训的对比&#xff1a; 线上学习平台&#xff1a; 灵活性&#xff1a;学员可以根据自己的时间安排自学&#xff0c;不受地点限制。 成本效益&#xff1a;通常在线课程费用较低…

MySQL中的时间函数整理汇总

1.获取当前时间 -- 获取当前时间 SELECT NOW(); -- 获取当前日期 SELECT CURDATE(); -- 获取当前时分秒 SELECT CURTIME(); 2.获取对应日期对应的年/月/日/月份名/星期数 -- 返回对应日期对应的年/月/日/月份名/星期数 select year(now())as 年,month(now())as 月,day(now())…