首页 > 系统相关 >Linux基础知识(9)- Git 简单使用(一)

Linux基础知识(9)- Git 简单使用(一)

时间:2022-11-10 15:33:28浏览次数:47  
标签:git com xxx 基础知识 Git Linux gitee myrepo


GIT,全称是分布式版本控制系统, Git 支持分布式部署,可以有效、高速的处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的 Git 仓库。


1. 安装

    Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,需要先安装这些依赖工具。

    1) CentOS 7.9 下安装

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

        $ git --version
            git version 1.8.3.1


    2) Ubuntu 18.04 下安装

        $ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
        $ sudo apt-get install git

        $ git --version
            git version 2.17.1

    注:Ubuntu 20、Windows 10 等系统新版本,已经默认安装了 Git,无需用户再安装。


2. 配置

    Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。

    这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

        (1) /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
        (2) ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
        (3) 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

    在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER。

    此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。

    1) 用户信息

        配置个人的用户名称和电子邮件地址:

            $ git config --global user.name xxx
            $ git config --global user.email [email protected]

        如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

        如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

        用户名称和电子邮件一般就是 GitHub、GitLab、Gitee 等的账号名和电子邮件。

    2) 文本编辑器

        设置 Git 默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置::

            $ git config --global core.editor emacs

    3) 差异分析工具

        还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:

            $ git config --global merge.tool vimdiff

        Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。

    4) 查看配置信息

        要检查已有的配置信息,可以使用 git config --list 命令:

            $ git config --list

                user.name=xxx
                [email protected]

        这些配置我们也可以在 ~/.gitconfig 或 /etc/gitconfig 看到,如下所示:

            $ cat  ~/.gitconfig

                [user]
                    user.name=xxx
                    [email protected]

        也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:

            $ git config user.name
        
                xxx

        如果看到重复的变量名,可能它们来自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),不过最终 Git 实际采用的是最后一个。


3. 创建本地仓库

    1) 初始化本地仓库

        初始化一个 Git 仓库,步骤如下:

            $ mkdir ~/myrepo
            $ cd myrepo

            $ git init      # 在 ~/myrepo 目录下初始化一个 Git 仓库

                Initialized empty Git repository in /home/xxx/myrepo/.git/

            $ ls -la .git

                total 12
                drwxrwxr-x. 7 tkuang tkuang 119 Nov  8 07:54 .
                drwxrwxr-x. 3 tkuang tkuang  18 Nov  8 07:54 ..
                drwxrwxr-x. 2 tkuang tkuang   6 Nov  8 07:54 branches
                -rw-rw-r--. 1 tkuang tkuang  92 Nov  8 07:54 config
                -rw-rw-r--. 1 tkuang tkuang  73 Nov  8 07:54 description
                -rw-rw-r--. 1 tkuang tkuang  23 Nov  8 07:54 HEAD
                drwxrwxr-x. 2 tkuang tkuang 242 Nov  8 07:54 hooks
                drwxrwxr-x. 2 tkuang tkuang  21 Nov  8 07:54 info
                drwxrwxr-x. 4 tkuang tkuang  30 Nov  8 07:54 objects
                drwxrwxr-x. 4 tkuang tkuang  31 Nov  8 07:54 refs

        执行 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据。

    2) 添加文件到仓库暂存区

        在 ~/myrepo 目录下,创建 test_1.txt 和 test_2.txt 文件,步骤如下:

            $ cd ~/myrepo

            $ cat > test_1.txt << EOF
            test_1.txt for Git Repo.
            EOF
            
            $ cat > test_2.txt << EOF
            test_2.txt for Git Repo.
            EOF


        查看 ~/myrepo 目录下 Git 仓库的状态,命令如下:

            $ git status ./     

                # On branch master
                #
                # Initial commit
                #
                # Untracked files:
                #   (use "git add <file>..." to include in what will be committed)
                #
                #       test_1.txt
                #       test_2.txt
                nothing added to commit but untracked files present (use "git add" to track)

            注:branch master 表示当前在仓库的 master 分支上,Untracked files 表示未被仓库监控的文件(新增文件),要先用 git add 加入仓库暂存区。

                不需要的未被仓库监控的文件,可以运行 git clean -f 命令来清除,包含目录的用 git clean fd 命令。

        添加 test_1.txt 到仓库暂存区:

            $ git add test_1.txt
            $ git status ./

                # On branch master
                #
                # Initial commit
                #
                # Changes to be committed:
                #   (use "git rm --cached <file>..." to unstage)
                #
                #       new file:   test_1.txt
                #
                # Untracked files:
                #   (use "git add <file>..." to include in what will be committed)
                #
                #       test_2.txt

            注:test_1.txt 已在仓库暂存区,test_2.txt 依然是未被仓库监控的文件。可以运行 git rm --cached test_1.txt 命令把 test_1.txt 从暂存区移除。

    3) 提交暂存区的文件到仓库

        $ git commit -m "Add test_1.txt to myrepo"

            [master (root-commit) 38da491] Add test_1.txt to myrepo
            1 file changed, 1 insertion(+)
            create mode 100644 test_1.txt

        $ git log       # 查看 commit 信息,可以运行 git log --name-only 显示文件名

            commit 38da49184fc15ef28d9d3273c4f8dcfc3b0f550c
            Author: xxx <[email protected]>
            Date:   Tue Nov 8 08:36:53 2022 -0500

                Add test_1.txt to myrepo


4. HTTPS 方式连接 Gitee

    1) 上传到远程仓库

        Git 远程仓库可以自己搭建,也可以使用 Git 托管平台,比如 GitHub、GitLab、Gitee 等。GitHub 是全球最流行的开源 Git 托管平台,开源项目较多,但是国内访问速度慢。Gitee 是一个国内 Git 代码托管平台,访问速度快。
        
        本文以 Gitee 为例,演示如何把 myrepo 仓库上传到 Gitee。

        (1) 注册 Gitee 账号

            访问 https://gitee.com/login,Gitee 支持 GitHub 账号、GitLab 账号、微信账号等多种账号登陆,也可以访问 https://gitee.com/signup 注册一个新的 Gitee 账号。

            假设注册的账号名为 xxx,本地仓库是 myrepo,则远程仓库地址如下:

                HTTPS 协议仓库地址:https://gitee.com/xxx/myrepo.git
                SSH 协议仓库地址:[email protected]/xxx/myrepo.git

        (2) 上传到 Gitee

            $ cd ~/myrepo
                
            $ git remote add origin https://gitee.com/xxx/myrepo.git
            $ git push -u origin master  # origin 是远程主机,master 表示是远程服务器上的 master分支

                Username for 'https://gitee.com': xxx
                Password for 'https://[email protected]':
                fatal: repository 'https://gitee.com/xxx/myrepo.git/' not found    

                注:需要在 Gitee 上创建一个空仓库 myrepo,再运行 git push -u origin master 命令。

                    xxx 是 Gitee 账号名,下同。

                    git push 带上 -u 参数,记录了 push 到远端分支的默认值,这样下次上传直接运行 git push 即可。

            # 在 Gitee 上新创建空仓库 myrepo 后,再运行如下命令
            $ git push -u origin master    

                Username for 'https://gitee.com': xxx
                Password for 'https://[email protected]':
                Counting objects: 3, done.
                Writing objects: 100% (3/3), 242 bytes | 0 bytes/s, done.
                Total 3 (delta 0), reused 0 (delta 0)
                remote: Powered by GITEE.COM [GNK-6.4]
                To https://gitee.com/xxx/myrepo.git
                * [new branch]      master -> master
                Branch master set up to track remote branch master from origin.

                注:在 Gitee 上看到 test_1.txt 文件上传成功。


    2) Clone 远程仓库

        使用 git clone 从现有 Git 仓库中拷贝项目,命令格式:

            git clone <repo>

            git clone <repo> <directory>

        参数说明:

            repo: Git 仓库。
            directory: 本地目录。

        在本地仓库 myrepo 所在主机的其它目录,Clone 远程仓库:

            $ cd ~/temp

            $ git clone https://gitee.com/xxx/myrepo.git

                Cloning into 'myrepo'...
                Username for 'https://gitee.com': xxx
                Password for 'https://[email protected]':
                remote: Enumerating objects: 3, done.
                remote: Counting objects: 100% (3/3), done.
                remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
                Unpacking objects: 100% (3/3), done.

            $ git clone https://gitee.com/xxx/myrepo.git myrepo_2

                Cloning into 'myrepo_2'...
                Username for 'https://gitee.com': xxx
                Password for 'https://[email protected]':
                remote: Enumerating objects: 3, done.
                remote: Counting objects: 100% (3/3), done.
                remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
                Unpacking objects: 100% (3/3), done.

            $ ls

                myrepo  myrepo_2


    3) 保存账号名和密码

        上文在一台主机上每次 Clone 都需要输入 Gitee 账号名和密码,而且每次操作远程仓库时,都需要输入账号名和密码,比如:git pull 操作。

            $ cd ~/temp/myrepo
            $ git pull      # 远程仓库同步到本地仓库

                Username for 'https://gitee.com': xxx
                Password for 'https://[email protected]':
                Already up-to-date.

        很显然,我们需要在一次正确输入账号名和密码后,把账号名和密码保存起来,提高工作效率。

        (1) 保存账号名和密码,当前仓库范围使用

            在一次正确输入账号名和密码后,运行如下命令。

            $ git config credential.helper store    # 保存到 ~/.git-credentials,修改当前仓库 .git/config
            $ git pull
            
                Already up-to-date.

                注:这次操作无需输入账号和密码。

            $ cd ~/temp/myrepo_2        # 进入 ~/temp/myrepo_2 仓库        
            $ git pull

                Username for 'https://gitee.com': xxx
                Password for 'https://[email protected]':
                Already up-to-date.

                注:保存的密码仅在 ~/temp/myrepo 仓库范围有效,所以访问 ~/temp/myrepo_2 仓库,仍然需要输入账号名和密码。


        (2) 保存账号名和密码,当前 Linux 用户范围使用

            在一次正确输入账号名和密码后,运行如下命令。

            $ git config --global credential.helper store   # 保存到 ~/.git-credentials,修改 ~/.gitconfig

            $ cd ~/myrepo
            $ git pull      # 这次操作无需输入账号和密码

                Already up-to-date.

        注:把账号名和密码明文保存到 ~/.git-credentials 存在很大的安全隐患。对于安全要求环境,这种方式不太适合,应该使用 SSH 方式。


5. SSH 方式连接 Gitee

    1) 创建本地 SSH Key

        # 在本地仓库所在主机上,生成 SSH Key
        $ ssh-keygen -t rsa -C "[email protected]"

            Enter file in which to save the key (~/.ssh/id_rsa): gitee_rsa
            Enter passphrase (empty for no passphrase):
            Your identification has been saved in gitee_rsa.
            Your public key has been saved in gitee_rsa.pub.
            The key fingerprint is:
            SHA256:PRNU7CjaMdpjIxE8WLlQT5WUAqVuHB8eZ2falHs80zw [email protected]
            The key's randomart image is:
            +---[RSA 2048]----+
            |     =++oo+=.    |
            |    o =+..o ..   |
            |     .o++.+o=    |
            |     oo++*.B.o o |
            |      +*S+= o =Eo|
            |     .+ *  o . o.|
            |       o o       |
            |                 |
            |                 |
            +----[SHA256]-----+

            注:电子邮件 [email protected] 用于生成 Key,不需要与 Gitee 注册的电子邮件保持一致。passphrase 是 Key 的密码,不是账号密码,尽量不要用账号密码,也可以直接回车,不使用 Key 密码。

        # 启动 ssh-agent
        $ eval "$(ssh-agent -s)"

        # 将 Private Key 添加到 ssh-agent
        $ ssh-add ~/.ssh/gitee_rsa

        # 显示 Public Key
        $ cat ~/.ssh/gitee_rsa.pub

            ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/mkkAYFKwOEEfarqWBivHtyAh+zYaQtw4dyBhmQ/tTUKqQ81NWfB9qbmYwKigYUHEYXmD961g2O+J34UzZ3v/J2hY6hDn++k3mC1XHG1m1/g5FIRbF7ls7+MeW2DbuZk8DMfZpNkMaHHW6IUsyrC1sbpBAHZb/hWhsfWAsbMKU2wF0EMU3Toddr62hLQ9K49KO3YgFWRMl9qs6uhafEFMksJROoZRoihMCIFqo8ro+bVD8PGHH+WCNZT35VPGzFoQpucQheWErXLCoC6xiLbGVO9wgh/LdU58wPjy+P7CyOtinJ4IDoGw+zVNWGzNv4t/Uh0nuvz1mU4f2vosy+31 [email protected]


    2) 在 Gitee 上添加 SSH 公钥

        Gitee 后台右上下拉菜单 -> 设置 -> 页面左侧菜单 (安全设置) -> SSH公钥页面-> 添加公钥

                标题: [email protected] public key

                公钥: gitee_rsa.pub 里的内容

            -> 点击 “确定” 按钮

        $ ssh -T [email protected]

            Hi xxx! You've successfully authenticated, but GITEE.COM does not provide shell access.

            注:表示 ssh 连接成功。

    3) 操作远程仓库

        $ cd ~/temp

        $ git clone [email protected]:xxx/myrepo.git myrepo_3

            Cloning into 'myrepo_3'...
            remote: Enumerating objects: 3, done.
            remote: Counting objects: 100% (3/3), done.
            remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
            Receiving objects: 100% (3/3), done.

        $ ls
            
            myrepo  myrepo_2  myrepo_3

 

标签:git,com,xxx,基础知识,Git,Linux,gitee,myrepo
From: https://www.cnblogs.com/tkuang/p/16877201.html

相关文章

  • linux安装java
    1.在/usr下新建java2.上传安装包到java,并解压tar-xvfjdk....tar.gz3.ln-s/usr/java/jdk1.8.0_351/usr/jdk 设置链接,节约目录长度4.vim/etc/profile 5. 配置......
  • linux 从内存中恢复已删除的文件
    ps-ef|greppython3或者lsof|grep<文件绝对路径>查看打开文件的进程号cd/proc/<进程号>/fd/ll查看当前目录下数字和文件的映射cat<文件对应的数字>><想要恢......
  • 关于右键git bash不生效的另类解决方案jintianshangwu
    今天上午我是参照了网上别的博主的删除对应注册表的办法,重启电脑也没用,gitbash还是在右键那里,并且还点击了也没用。 后面我就想到了一个办法,删除git安装目录,删除了之后......
  • day29 git讲解
    概述:git是一个版本管理工具。用于管理对应的项目的版本。git是一个分布式的项目管理工具,我每个本地的代码都是一个本地的仓库,然后最终提交到远程仓库(git是一个多分支的版......
  • Linux 性能优化和内核观察 - CPU 篇(一)
    简介中央处理器(centralprocessingunit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。所有的计算机程序都运行在CPU之上,在大多数情况下CPU......
  • linux常用硬件故障排查工具之dmesg
      dmesg命令是用来在Unix-like系统中显示内核的相关信息的。dmesg全称是displaymessage(ordisplaydriver),即显示信息。实际上,dmesg命令是从内核环形......
  • Linux安装JDK并配置环境变量
    1.前往JDK官网,地址:https://www.oracle.com/java/technologies/downloads/下载需要的版本(优先java8)   2. 使用cd进入指定目录下,使用mkdir新建一个文件夹,继续使......
  • [ Linux ] 文件描述符和重定向
    在上篇文章我们复习了C文件IO操作并且认识了文件相关的系统调用接口。本篇文章我们要引入文件描述符的概念。0.文件描述符0.1引入文件描述符我们在认识open接口时知道了该接......
  • 解决golang报错:imports github.com/go-sql-driver/mysql from implicitly required mo
    这句话的意思是,从隐式的引入模块导入的比如我使用某个第三方包,这个第三方包里面包含了mysql包我在代码里直接使用了这个mysql包,但是在go.mod里没有引入,代码里ide是不会报......
  • 如何优雅的在Linux下开机自动重启脚本
    1简介经常碰到机器断电之后需要重启一大堆服务,为了防止这种事情发生,设置开机自启的脚本十分的重要,我们习惯性的做法就是编写一个重启脚本,然后在 /etc/rc.local 中去完......