Git基本知识

news2024/11/28 7:26:56

Git基本知识

1、Git 资料参考

Git 官网:https://book.git-scm.com/

Git 完整命令手册地址:http://git-scm.com/docs

Git 中文文档:https://git-scm.com/book/zh/v2

2、Git安装

Git 各平台安装包下载地址为:

http://git-scm.com/downloads

2.1 Windows下的安装

安装包下载地址:

https://github.com/git-for-windows/git/releases/

https://gitforwindows.org/

官网慢,可以用国内的镜像:

https://npm.taobao.org/mirrors/git-for-windows/

这里选择 Git-2.34.0-64-bit

安装像普通软件安装一样,点击下一步即可。

安装完成之后启动 cmd 查看安装情况:

$ git --version
git version 2.34.0.windows.1

完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管

理工具。在开始菜单里找到Git -> Git Bash,会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。

git bash 是命令行工具,git gui 是图形化工具。

2.2 Centos下的安装

2.2.1 命令安装

$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
$ yum -y install git-core
$ git version
git version 1.8.3.1

2.2.2 源码安装

1、git源码下载地址

https://mirrors.edge.kernel.org/pub/software/scm/git/

https://github.com/git/git/releases

https://www.kernel.org/pub/software/scm/git/

下载源码包,这里选择 git-2.34.0.tar.gz

2、移除旧版本git

centos自带Git,7.x版本自带 git 1.8.3.1, 安装新版本之前需要使用 yum remove git卸载(安装后卸载也可

以)。

# 查看自带的版本
$ git --version
git version 1.8.3.1

# 移除原来的版本
$ yum remove git

3、安装所需软件包

$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
$ yum install gcc-c++ perl-ExtUtils-MakeMaker 
$ yum -y install autoconf

4、下载&安装

$ cd /home/zhangshixing
$ wget https://www.kernel.org/pub/software/scm/git/git-2.34.0.tar.gz

或者下载以后上传到服务器。

5、解压

$ tar xf git-2.34.0.tar.gz

6、配置编译安装

$ cd git-2.34.0
$ make configure
# 配置目录
$ ./configure --prefix=/usr/git
$ make profix=/usr/git
$ make install

7、加入环境变量

$ echo "export PATH=$PATH:/usr/git/bin" >> /etc/profile
$ source /etc/profile

8、检查版本

$ git --version 
git version 2.34.0

3、Git 文件的状态

在这里插入图片描述

  • UnTracked:未跟踪,此文件在文件夹中,但并没有加入到 git 库,不参与版本控制,通过 git add 状态变为

    Staged

  • UnModify:文件已经入库,未修改, 即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两

    种去处,如果它被修改,而变为 Modified。如果使用 git rm 移出版本库,则成为 UnTracked 文件。

  • Modified:文件已修改,仅仅是修改,并没有进行其他的操作。这个文件也有两个去处,通过 git add

    进入暂存 staged 状态,使用 git checkout 则丢弃修改过,返回到 unmodify 状态,这个git checkout

    即从库中取出文件,覆盖当前修改。

  • Staged:暂存状态,执行 git commit 则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件

    UnModify状态。执行 git reset 取消暂存,文件状态为 Modified

4、添加公钥至github

使用以下命令生成 SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"
# 例如
$ ssh-keygen -t rsa -C "2420309401@qq.com"

后面的 your_email@youremail.com 改为你注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一

路回车就行。

成功的话会在 ~/ 下生成 .ssh 文件夹,进去打开 id_rsa.pub,复制里面的 key

回到 github 上,进入 Account => Settings (账户配置)。

左边选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生

成的 key,选择Authentication Keys,然后点击 Add SSH key

为了验证是否成功,输入以下命令:

$ ssh -T git@github.com
Hi zsx242030! You've successfully authenticated, but            GitHub does not provide shell access.

以上命令说明我们已成功连上 Github。

如果 ssh 访问 GitHub 出错:

$ ssh -T git@github.com
The authenticity of host 'github.com (140.82.118.4)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.

解决办法:将 GitHub 添加到信任主机列表后,可以成功访问。

$ ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
# github.com:22 SSH-2.0-babeld-d45c1532

$ ssh -T git@github.com
Warning: Permanently added the RSA host key for IP address '140.82.118.4' to the list of known hosts.
Hi earthnorth! You've successfully authenticated, but GitHub does not provide shell access.

添加至 gitee 的方法也一样。

5、同时关联Github和Gitee

使用多个远程库时,我们要注意,git 给远程库起的默认名称是 origin,如果有多个远程库,我们需要用不同的名

称来标识不同的远程库。

以 gitdemo 本地库为例,首先我们先删除已关联的名为 origin 的远程库:

# 本地文件
$ ls
README.md

$ cat README.md
# Git测试
$ git remote rm origin

然后,先关联 GitHub 的远程库:

$ git remote add github git@github.com:zsx242030/gitdemo.git

注意,远程库的名称叫 github,不叫 origin 了。

接着,再关联 Gitee 的远程库:

$ git remote add gitee git@gitee.com:zsx242030/gitdemo.git

同样注意,远程库的名称叫 gitee,不叫 origin。

现在,我们用 git remote -v 查看远程库信息,可以看到两个远程库:

$ git remote -v
gitee   git@gitee.com:zsx242030/gitdemo.git (fetch)
gitee   git@gitee.com:zsx242030/gitdemo.git (push)
github  git@github.com:zsx242030/gitdemo.git (fetch)
github  git@github.com:zsx242030/gitdemo.git (push)

如果要推送到 GitHub,使用命令:

$ git fetch github
From github.com:zsx242030/gitdemo
 * [new branch]      master     -> github/master

$ git merge github/master --allow-unrelated-histories
Already up-to-date.

$ git add .

$ git commit -m "github仓库提交文件"
On branch master
nothing to commit, working tree clean

$ git push github master
Everything up-to-date

如果要推送到 Gitee,使用命令:

$ git fetch gitee

$ git merge gitee/master --allow-unrelated-histories
merge: gitee/master - not something we can merge

$ git add .

$ git commit -m "gitee仓库提交文件"
On branch master
nothing to commit, working tree clean

$ git push gitee master
Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (9/9), 1.14 KiB | 166.00 KiB/s, done.
Total 9 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:zsx242030/gitdemo.git
 * [new branch]      master -> master

这样一来,我们的本地库就可以同时与多个远程库互相同步。

6、Git服务器搭建

我们可以自己搭建一台 Git 服务器作为私有仓库使用。

接下来我们将以 Centos 为例搭建 Git 服务器。

6.1 安装Git

请参考上面的安装,查看版本:

$ git --version
git version 2.34.0

接下来我们创建一个 git 用户组和用户,用来运行 git 服务:

$ groupadd git
$ useradd git -g git

6.2 创建证书登录

收集所有需要登录的用户(进行git clone的用户)的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到

/home/git/.ssh/authorized_keys文件里,一行一个。

如果没有该文件创建它:

$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys
$ vim .ssh/authorized_keys
# 输入公钥,和Github中Gitee中生成的一样

6.3 初始化Git仓库

首先我们选定一个目录作为 Git 仓库,假定是/home/gitrepo/zsxtest.git,在/home/gitrepo目录下输入命

令:

$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo
$ git init --bare zsxtest.git

以上命令 Git 创建一个空仓库,服务器上的 Git 仓库通常都以 .git 结尾。然后,把仓库所属用户改为git:

$ chown -R git:git zsxtest.git

6.4 克隆仓库

$ mkdir zsxtest

$ cd zsxtest/

$ git clone git@192.168.58.195:/home/gitrepo/zsxtest.git
Cloning into 'zsxtest'...
warning: You appear to have cloned an empty repository.

$ cd zsxtest/

$ ls -alh
total 4.0K
drwxr-xr-x 1 zhangshixing 197121 0 312 19:44 ./
drwxr-xr-x 1 zhangshixing 197121 0 312 19:44 ../
drwxr-xr-x 1 zhangshixing 197121 0 312 19:44 .git/

$ git config user.name "zsx242030"

$ git config user.email "2420309401@qq.com"

$ echo hello > hello.txt

$ git add hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory.

$ git commit -m "add hello.txt"
[master (root-commit) 576a7d5] add hello.txt
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt

$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 216 bytes | 216.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 192.168.58.195:/home/gitrepo/zsxtest.git
 * [new branch]      master -> master
 
$ git log
commit 576a7d597804251445d5a92c24f053312c0f89f0 (HEAD -> master, origin/master)
Author: zsx242030 <2420309401@qq.com>
Date:   Sun Mar 12 19:46:40 2023 +0800

    add hello.txt

192.168.58.195 为 Git 所在服务器 ip ,你需要将其修改为你自己的 Git 服务 ip。

这样我们的 Git 服务器安装就完成。

7、Git常用标志的意义

git 中 A C D M R T U X 分别解释:

A:你本地新增的文件,服务器上没有

C:文件的一个新拷贝

D:你本地删除的文件,服务器上还在

M:文件的内容或者mode被修改了

R:文件名被修改了

T:文件的类型被修改了

U:文件没有被合并(你需要完成合并才能进行提交)

X:未知状态(很可能是遇到git的bug了,你可以向git提交bug report)

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

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

相关文章

F407标准库之定时器触发AD转换

关于ADC转换&#xff0c;正点原子的标准库开发中讲的是&#xff1a;软件触发一次转换&#xff0c;然后获取一个数据&#xff0c;没提及外部触发&#xff0c;也没提及ADC中断。 如果要多次读取数据&#xff0c;可以通过循环延时来实现。 这种情况就是通过多次调用&#xff0c;轮…

中国电子学会2023年05月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)

2023-05 Scratch三级真题 分数&#xff1a;100 题数&#xff1a;38 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1. 关于变量&#xff0c;下列描述错误的是&#xff1f;&#xff08;A &#xff09;&#xff08;2分&#xff09; A.只能建一个变量 …

【CANoe】CAPL如何检测周期性报文

文章目录 一、实例1、新建工程2、增加两个 Module3、选择在线模式(Online Mode)仿真总线(Simulated Bus)4、配置CAPL Test Moduletest.can代码如下&#xff1a; 5、配置CAN IG(发送周期报文0x101)6、测试结果 二、核心代码三、CAPL函数详解截图参考&#xff1a; 一、实例 以下…

浅谈这些年如何被MDK, IAR, GCC和厂家SDK版本兼容性“蹂躏”, 一代版本一代坑

原创文章&#xff0c;转载请注明出处&#xff1a;https://www.armbbs.cn/forum.php?modviewthread&tid119562 版本迭代是嵌入式开发永久的痛&#xff0c;这么多年不知道浪费了多少时间在版本迭代上。 部分系统组件还好点&#xff0c;有个LTS长期支持版&#xff0c;而厂家…

侧信道攻击:SPA / DPA

参考资料&#xff1a;Cryptographic Engineering, by Cetin Kaya Ko, Editor Springer. 文章目录 Side-Channel AnalysisTiming AnalysisSample Power AnalysisDifferential Power Analysis其他攻击 对抗方法 Side-Channel Analysis 对于密码算法的攻击手段&#xff0c;往往是…

【LoRaWAN】单播与组播multicast调试记录

本文主要记录 【LoRaWAN】单播与组播multicast调试过程的问题 2023.06.09 &#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是喜欢记录零碎知识点的小菜鸟。&#x1f60e;&#x1f4dd; 个人主页&#xff1a;[欢迎访问我的 Ethernet_Comm 博客…

甘孜州文化旅游产品市场营销策略研究_kaic

甘孜州文化旅游产品市场营销策略研究 摘要&#xff1a; 近年来&#xff0c;随着文化旅游的兴起&#xff0c;越来越多的旅游者渴望精神层面的满足&#xff0c;获得新奇的文化体验&#xff0c;而我国文化旅游仍处于单层次的观赏旅游。本文研究背景包括对旅游行业的背景介绍&#…

【HTML】form标签

<form> 标签用于创建 HTML 表单&#xff0c;它是用于收集用户输入的重要元素。表单可以包含各种输入字段、按钮和其他交互元素&#xff0c;用于向服务器发送用户输入数据。 下面是一个简单的 <form> 标签的示例&#xff1a; <form action"/submit-form&q…

Spring高级装配--条件化的bean

目录 条件化创建bean的例子 使用 解析 条件化创建bean的例子 希望一个或多个bean只有在应用的类路径下包含特定的库时创建希望某个bean只有当另外某个特定的bean也声明之后才会创建要求某个特定的环境变量设置之后&#xff0c;才会创建某个bean在Spring 4之前&#xff0c;很…

【乐观锁与悲观锁】—— 每天一点小知识

&#x1f4a7; 乐观锁与悲观锁 \color{#FF1493}{乐观锁与悲观锁} 乐观锁与悲观锁&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算法》专栏的文章图文并茂&…

2023-06-09:什么是Redis事务?原理是什么?

2023-06-09&#xff1a;什么是Redis事务&#xff1f;原理是什么&#xff1f; 答案2023-06-09&#xff1a; Redis中的事务是以一组命令的形式出现的&#xff0c;这些命令被认为是最小的执行单位。事务可以保证在一个单独独立的隔离操作中执行所有命令&#xff0c;而且所有命令…

linuxOPS基础_linux ACL访问控制

问题&#xff1a;我们学过的所有者身份包含哪些&#xff1f; 答案:ugo,属主&#xff0c;属组&#xff0c;其他。 问题&#xff1a;我们学过的文件权限包含哪些&#xff1f; 答案&#xff1a;rwx&#xff0c;读写执行&#xff0c;特殊s,t ​ ACL&#xff0c;是 Access Contro…

java变量

基本数据类型介绍 基本的数据类型: 整数类型&#xff1a;byte、short、int、long 定义long类型的变量&#xff0c;赋值时需要以"l"或"L"作为后缀。 Java程序中变量通常声明为int型&#xff0c;除非不足以表示较大的数&#xff0c;才使用long。 Java的整…

移动开发行业,就业及毕业,再到无业,夜夜无眠~

近期听得最多的一个消息就是&#xff1a;“今年太不好找工作了” 这是粉丝朋友发来的感叹&#xff0c;三个星期内没有找到工作&#xff0c;在我朋友圈中算短的了&#xff0c;还有不少朋友已经失业快半年了&#xff0c;情况都和这个类似。 是移动互联网市场变了吗&#xff1f; …

字符串是否相等案例s1==s3?

下列代码的运行结果是&#xff1f; public class test { public static void main(String[] args) { String s1 "abc"; String s2 "ab"; String s3 s2 "c"; System.out.println(s1 s3); } } /** C…

【linux】信号的保存和递达处理

上节我们了解到了预备&#xff08;信号是什么&#xff0c;信号的基础知识&#xff09;再到信号的产生&#xff08;四种方式&#xff09;。今天我们了解信号的保存。信号产生&#xff0c;进程不一定立马就去处理&#xff0c;而是等合适的时间去处理&#xff0c;那么在这段时间内…

[Java基础]面向对象

目录 1、对象和类 2、类之间的关系 3、引用 4、对象的创建和使用 5、构造函数/构造方法 6、内存解析 在这篇文章中&#xff0c;我们将学习面向对象的思想&#xff0c;并学习如何使用面向对象思想编程。在学习面向对象编程之前&#xff0c;我们先了解一下编程语言的发展&a…

Win安装Node.js Npm

1、在使用之前&#xff0c;先类掌握3个东西&#xff0c;明白它们是用来干什么的&#xff1a; npm: nodejs 下的包管理器。 webpack: 它主要用途是通过CommonJS 的语法把所有浏览器端需要发布的静态资源作相应的准备&#xff0c;比如资源的合并和打包。 vue-cli: 用户生成Vue工…

HNU-操作系统OS-作业4(37-40章)

OS_homework_4 这份文件是OS_homework_4 by计科2102 梅炳寅 202108010206 文档设置了目录,可以通过目录快速跳转至答案部分。 第37章 运行程序wolf/OS-homework/file-disks/disk.py 解释一些参数 -G可以查看可视化内容-c可以计算结果。-a 提供待访问的数组-S 将寻道速率改…

深度学习训练营之优化器对比

深度学习训练营之优化器对比 原文链接环境介绍前置工作设置GPU 数据处理导入数据数据集处理数据集可视化 模型构造模型训练结果可视化 原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营…