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

news2025/2/5 14:52:34

介绍:

        使用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系统下其实也可以运用起来,只需在对应的仓库文件夹中打开窗口或打开相关指令界面进行输入指令操作即可。

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

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

相关文章

解决electron修改主进程后需要重启才生效

nodemon 是一种工具&#xff0c;可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于 node.js 的应用程序 nodemon 特性 自动重新启动应用程序。检测要监视的默认文件扩展名。默认支持 node&#xff0c;但易于运行任何可执行文件&#xff0c;如 python、…

uniapp获取wifi连接状态

当使用Uniapp开发移动应用时&#xff0c;我们经常需要获取设备的连接状态&#xff0c;特别是WiFi连接状态。下面是一个简短的关于在Uniapp中获取WiFi连接状态的博客&#xff1a; 在Uniapp中&#xff0c;要获取设备的WiFi连接状态&#xff0c;我们可以利用uni.getNetworkType接…

【HarmonyOS开发】详解常见容器的使用

声明式UI提供了以下8种常见布局&#xff0c;开发者可根据实际应用场景选择合适的布局进行页面开发。 布局 应用场景 线性布局&#xff08;Row、Column&#xff09; 如果布局内子元素超过1个&#xff0c;且能够以某种方式线性排列时优先考虑此布局。 层叠布局&#xff08;St…

2023-12-05 Qt学习总结8

点击 <C 语言编程核心突破> 快速C语言入门 Qt学习总结 前言二十三 QSqlDatabase数据库二十四 cmake工程管理文件总结 前言 要解决问题: 学习qt最核心知识, 多一个都不学. 二十三 QSqlDatabase数据库 QSqlDatabase 是 Qt 框架中关于数据库的统一封装&#xff0c;它支持…

【Hexo】自动在中英文之间添加空格

本文首发于 ❄️慕雪的寒舍 如题&#xff0c;中英文添加空格是比较规范的写法&#xff0c; 但是我个人实在是懒&#xff0c;每次都要这么弄太累了。想找找hexo有没有对应的插件&#xff0c;还是有的 npm install hexo-filter-auto-spacing --save安装了之后&#xff0c;在hexo的…

Qt生成动态链接库并使用动态链接库

项目结构 整个工程由一个主程序构成和一个模块构成(dll)。整个工程的结构目录如下 Define.priMyProject.proMyProject.pro.user ---bin ---MainProgrammain.cppMainProgram.proMainProgram.pro.userwidget.cppwidget.hwidget.ui ---MathDllMathDll.proMathDll.pro.userMyMath.…

Linux基础命令-期末复习

目录 一、Linux文件和目录 1.mkdir创建目录 2.ls列出目录 3.pwd显示当前所在目录 4.cd切换目录 5.rmdir删除空的目录 6.rm删除文件或目录 7.touch创建文件 8.cp复制文件或目录 1.把文件从该目录复制到下一级目录中去 2.把文件从该目录复制到上一级目录中去 3.把文件…

laravel的ORM 对象关系映射

Laravel 中的 ORM&#xff08;Eloquent ORM&#xff09;是 Laravel 框架内置的一种对象关系映射系统&#xff0c;用于在 PHP 应用中与数据库进行交互。Eloquent 提供了一种优雅而直观的语法&#xff0c;使得开发者可以使用面向对象的方式进行数据库查询和操作。 定义模型&…

C++ 面向对象补充

目录 初始化列表 explicit关键字 单参数构造函数 多参数构造函数 static成员 友元 内部类(不常用) 匿名对象 初始化列表 以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个成员变量后面跟 一个放在括号中的初始值或表达式。 class Date…

【密码学引论】认证

认证是许多应用系统中安全保护的第一道设防认证和加密的区别&#xff1a;加密用来确保数据的保密性&#xff0c;而认证用来确保报文发送者和接受者的真实性和报文的完整性。认证和数字签名的区别&#xff1a; 认证总是基于某种收发双方共享的保密数据来认证被鉴别对象的真实性&…

【开源】基于Vue.js的房屋出售出租系统

文末获取源码&#xff0c;项目编号&#xff1a; S 083 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S083。} 文末获取源码&#xff0c;项目编号&#xff1a;S083。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 房屋销售模块2.2 房屋出租模块2.3 预…

C++笔记之重载和重写辨别

C笔记之重载和重写辨别 code review! 文章目录 C笔记之重载和重写辨别重载&#xff08;overloading&#xff09;重写&#xff08;Overriding&#xff09; 在C中&#xff0c;重载&#xff08;overloading&#xff09;和重写&#xff08;overriding&#xff09;是面向对象编程中…

【数据结构】——二叉树功能

前言&#xff1a;我们前面已经了解了二叉树的一些概念&#xff0c;那么我们今天就来了解下二叉树的遍历实现和一些性质。 二叉树的遍历方式有三种&#xff1a;前序&#xff0c;中序&#xff0c;后序。 前序&#xff1a;先根节点&#xff0c;再左子树&#xff0c;最后右子树。 中…

python画动漫形象(魔法少女小圆晓美焰,super beautiful)

1.源代码 import turtle as te import time WriteStep 15 # 贝塞尔函数的取样次数 Speed 5 Width 600 # 界面宽度 Height 500 # 界面高度 Xh 0 # 记录前一个贝塞尔函数的手柄 Yh 0 def Bezier(p1, p2, t): # 一阶贝塞尔函数 return p1 * (1 - t) p2 * t def Bezier_2(x1…

关于mysql高版本使用groupby导致的报错

在开发时&#xff0c;遇到mysql版本在5.7.X及以上版本时使用group by 语句会报以下的错误 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column business_typ…

Android:The emulator process for AVD Pixel_2_API_29 was killed

The emulator process for AVD Pixel_2_API_29 was killed 报错描述&#xff1a; 第一次安装Android studio好不容易解决gradle启动模拟器又出现了以下错误 The emulator process for AVD Pixel_2_API_29 was killed原因一&#xff1a; 需要安装Intel x86 Emulator Acceleer…

2023济南大学acm新生赛题解

通过答题情况的难度系数&#xff1a; 签到&#xff1a;ACI 铜牌题&#xff1a;BG 银牌题&#xff1a;EF 金牌题&#xff1a;DHJKO 赛中暂未有人通过&#xff1a;LMNP A - AB Problem 直接根据公式计算就行。 #include<stdio.h> int main(){int a,b;scanf("%…

【Docker】Docker Compose,yml 配置指令参考的详细讲解

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

Python ZeroMQ编程 网络通信协议详细说明和教程

ZeroMQ概述 ZeroMQ&#xff08;又名MQ&#xff0c;MQ&#xff0c;或zmq&#xff09;像一个可嵌入的网络库&#xff0c;但其作用就像一个并发框架。 ZeroMQ类似于标准Berkeley套接字&#xff0c;其提供了各种传输工具&#xff0c;如进程内、进程间、TCP和组播中进行原子消息传送…

数据结构与算法-Rust 版读书笔记-1语言入门

数据结构与算法-Rust 版笔记 一、语言入门 1、关键字、注释、命名风格 目前&#xff08;可能还会增加&#xff09;39个&#xff0c;注意&#xff0c;Self和self是两个关键字。 Self enum match super as extern mod trait async false …