Git基本知识

这篇具有很好参考价值的文章主要介绍了Git基本知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 文件的状态

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)文章来源地址https://www.toymoban.com/news/detail-477872.html

到了这里,关于Git基本知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt 基本知识

    QMainWindow:主窗口 菜单栏 工具栏 状态栏 QWidget:空白的窗口 所有界面组件的基类 QDialog:对话框类 new project Qt Widget Application qmake 后缀为 .pro 基类:QWidget Generate form 不要去掉 自动生成 ui 文件 Kit 一般使用第一个 widget.ui 界面加个 label 就行 可以在右下角进行调整 GUI 程序结构

    2024年02月22日
    浏览(27)
  • CSS基本知识

    CSS叫做层叠样式表。CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果。能够做到页面的样式和结构分离。 举个例子: 这里的style标签我们一般设置在head标签里。 可以看出被选择器修饰的和没被修饰的不同。 写在 style 标签中,嵌入到 html 内部,理

    2024年01月24日
    浏览(35)
  • 无人机基本知识

    目录 前言 一、总体概况 二、机身 三、涵道 四、动力系统 1、 螺旋桨  2、电机 3、电调 4、电池 五、遥控器 六、自动驾驶仪(飞控) 1、组成 (1)传感器 (2)接口 2、飞控的连接 3、控制逻辑 4、作用 5、产品 七、地面站 八、数传 九、深度相机 总结 参考文献 四旋翼飞机

    2024年01月19日
    浏览(31)
  • Linux 基本知识

    FHS(Filesystem Hierarchy Standard)—— 文件系统层次化标准 。 Filesystem Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的

    2024年02月16日
    浏览(27)
  • 电容的基本知识

    1、电容是电路中重要的元件,种类多、用途广,主要有插件类和贴片类两种。 2、电容主要特性参数:标称容量、耐压、误差、温度         2.1电容容量常用单位有微法《uF)、纳法《nF)、皮法《pF)        单位换算:1uF=10^3nF=10\\\"6pF《电容的基本单位用法拉(F)表示)例如: 105

    2024年02月11日
    浏览(34)
  • [Linux]线程基本知识

    一个正在执行的程序,它是 资源分配 的最小单位 进程中的事情需要按照一定的顺序逐个进行 进程出现了很多弊端: 一是由于进程是资源拥有者,创建、撤消与切换存在 较大的时空开销 ,因此需要引入轻型进程; 二是由于对称多处理机(SMP)出现,可以满足多个运行单位,

    2024年02月15日
    浏览(30)
  • 光耦基本知识

     1、光耦的种类          高速光耦、低速光耦;                 高速:6N137,HCPL-2601                 低速:PC817          线性光耦、非线性光耦;         以6N136与6N137为例         6N136是1Mbps的高速光耦,但是输出端采用的是 晶体管 ,所以输出电流的大小

    2024年02月02日
    浏览(64)
  • camera 硬件基本知识

    参考博客:1.【Camera专题】Qcom-你应该掌握的Camera调试技巧2_c枫_撸码的日子的博客-CSDN博客_outputpixelclock 2.浩瀚之水_csdn的博客_CSDN博客-深度学习,嵌入式Linux相关知识汇总,Caffe框架领域博主 3.一个早起的程序员的博客_CSDN博客-FPGA,PCIe应用实战,PCI-E理论剖析领域博主 一、硬件相关

    2024年02月15日
    浏览(31)
  • c++ 基本知识(一)

    一、c++调用python #include cstdlib int main() {     int result = system(\\\"python your_script.py\\\");     return 0; } 二、cmake、make、gcc的区别? 1、CMake(Cross-Platform Make)是一个跨平台的构建工具,用于生成适合不同操作系统和编译器的构建脚本。它使用CMakeLists.txt文件来描述项目的构建过程,并根据

    2024年02月16日
    浏览(24)
  • 【多线程】| 基本知识汇总

    线程(Thread)是 操作系统能够进行运算调度的最小单位 。它被包含在进程之中,是进程中的实际运作单位。 在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”称为线程(Thread) 当Java程序启动时,一个线程会立刻运行,该

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包