Git仓库介绍

由Git管理的项目, 分为本地仓库和远程仓库, 二者本质上类似, 都可以有多个分支.

仓库的URL为: https://github.com/<owner>/<repositoryName>

image-20220209042638957

Git操作流程

  1. 使用git init初始化本地项目

    此时会生成.git文件夹, 用来管理当前目录

  2. 默认分支名为master, 但此时使用git branch无法显示, 通过git log的输出信息可以大致猜测

    fatal: your current branch 'master' does not have any commits yet
  3. 使用git add *将当前工作区(当前目录)中的内容全部添加到暂存区中

  4. 使用git commit -m "提示信息"将暂存区的内容保存到本地仓库中, 此时再次输入git branch即可查看到分支名

    C:\Users\24563\Downloads\Documents\book>git branch
    * master
  5. 创建远程仓库

    1. 可以登录到GitHub上手动创建远程仓库, 保持本地项目名和远程仓库名一致

      image-20220610131041077
    2. 通过命令行创建一个远程仓库

      echo "# book" >> README.md                                         # 创建README.md文件
      git init                                                         # 初始化项目
      git add README.md                                                # 添加README.md文件到暂存区
      git commit -m "first commit"                                    # 提交到本地仓库
      git branch -M main                                                # 分支为main
      git remote add book https://github.com/yimeisuren/book.git        # 为远程仓库URL命名为book
      git push -u book main                                            # 将本地仓库推送到book

Git设置

  1. 设置姓名和邮箱地址

    $ git config --global user.name "yimeisuren"
    $ git config --global user.email "2456387473@qq.com"

image-20220209043550212

这条命令会在C:\Users\Administrator\.gitconfig中以如下形式输出设置文件

   [user]
       name = yimeisuren
       email = 2456387473@qq.com
  1. 提高命令输出的可读性

    $ git config --global color.ui auto

    这条命令也会对配置文件进行如下修改

    [color]
        ui = auto

GitHub设置

  1. 设置 SSH Key (连接仓库需要)

    $ ssh-keygen -t rsa -C "2456387473@qq.com" #设置ssh key命令
    Generating public/private rsa key pair.
    Enter file in which to save the key
    (/Users/your_user_directory/.ssh/id_rsa): #按回车键
    Enter passphrase (empty for no passphrase): #输入密码
    Enter same passphrase again: #再次输入密码

    输入密码之后出现

    Your identification has been saved in C:\Users\Administrator\.ssh\id_rsa.
    Your public key has been saved in C:\Users\Administrator\.ssh\id_rsa.pub.
    The key fingerprint is:
    <fingerprint值 2456387473@qq.com
    The key's randomart image is:

    其中id_rsa是私钥, id_rsa.pub是公钥

  2. 在GitHub中添加公钥

    image-20220209050202842 `id_rsa`和`id_rsa.pub`都可以使用记事本直接打开查看
  3. 使用私钥和GitHub进行认证和通信

    $ ssh -T git@github.com
    The authenticity of host 'github.com (207.97.227.239)' can't be established.
    RSA key fingerprint is fingerprint值 .
    Are you sure you want to continue connecting (yes/no)? #输入yes
    Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':#输入github账户密码

    出现如下语句代表操作成功

    $ Hi yimeisuren! You've successfully authenticated, but GitHub does not provide shell access.

Git基本操作

git init—初始化仓库

要使用 Git 进行版本管理, 必须先初始化仓库

$ mkdir git-tutorial     #创建git-tutorial文件夹
$ cd git-tutorial        #进入文件夹
$ git init                #初始化仓库
image-20220209060616158

生成的.git目录称为附属于该仓库的工作树

git status—查看仓库的状态

  1. 使用touch命令创建文件

    touch README.md
    touch sometest.txt
  2. 查看仓库状态

    git status
    image-20220209061117746
    • on branch master: 处于master分支
    • commits: 待提交的文件
    • untracked files: git-tutorial目录下存在但是没有被git仓库管理的对象

git add—向缓冲区中添加

git add * #表示添加所有文件
image-20220209061731693

git commit—保存仓库历史记录

git commit -m "任意一条描述信息"

将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录, 我们就可以在工作树中复原文件

image-20220209062325331

git log—查看提交日志

git log
image-20220209062416281

git remote add—关联远程仓库

git remote add <name> <project_url>
  1. 在GitHub上建立与本地仓库名相同的远程仓库(注意不要勾选自动生成README.md文件)

  2. 将本地仓库和远程仓库关联起来

    git remote add origin https://github.com/yimeisuren/origin #origin为远程仓库名

git push—推送至远程仓库

git push -u origin master #将本地仓库中的当前分支推送到orgin中的master分支中

git push操作只允许操作最新版本的远程库, 否则会push失败.

以一个实际场景为例进行说明

  1. 在配置好本地仓库和远程仓库之后, 将本地文件push到远程仓库中
  2. 发现不小心将一些隐私文件进行了上传, 登录到github上进行手动删除
  3. 在之后某天, 对本地仓库的一些文件进行增删改之后, 重新push, 此时发现push失败

上面失败的原因在于, 当在github上手动删除文件时, 此时本地仓库的版本和远程仓库中的版本不一致, 因此无法直接push, 需要先pull, 然后再进行push操作.

版本回退

  1. 使用git log或者git reflog命令查看commitID属性
  2. 使用git reset --hard <commitID>来进行版本回退

文件忽略

在当前git目录下创建.gitignore文件, 在其中配置想要忽略的文件

分支

创建分支

语法: git branch <branchName>

查看分支

语法: git branch

从下面的示例可以看出, 创建了一个名为X的分支, 并显示了出来

C:\Users\24563\Downloads\Documents\XNote>git branch X
C:\Users\24563\Downloads\Documents\XNote>git branch
  X
* master

切换分支和当前分支Head

当前分支是指在本地工作区中操作的那个分支. Head指向哪个分支, 则那个分支即为当前分支. 可以使用git log查看当前分支, 如下所示当前分支为master分支.

C:\Users\24563\Downloads\Documents\XNote>git log
commit 93a491c96359852a42ffff8c7300ac3640416cd7 (HEAD -> master, XNote/master, X)
Author: yimeisuren <2456387473@qq.com>
Date:   Fri Jun 10 10:16:07 2022 +0800

    重新提交

使用git checkout -b <branchName>进行切换分支, 添加-b选项表示如果分支不存在, 则先进行创建分支, 再进行切换, 如下所示

C:\Users\24563\Downloads\Documents\XNote>git checkout X
Switched to branch 'X'
M       vue-admin-template
M       "\350\275\257\344\273\266\351\241\271\347\233\256\347\256\241\347\220\206/Git\345\222\214GitHub.md"

C:\Users\24563\Downloads\Documents\XNote>git log
commit 93a491c96359852a42ffff8c7300ac3640416cd7 (HEAD -> X, XNote/master, master)
Author: yimeisuren <2456387473@qq.com>
Date:   Fri Jun 10 10:16:07 2022 +0800

    重新提交

合并分支

语法: git merge <branchName>

<branchName>分支中的提交内容合并到当前分支中

面试题

Git 代码冲突怎么处理

代码冲突的原因:出现冲突的原因是本地文件的版本和目标分支中文件的版本不一致。当出现同一行的内容不同时,在进行合并的时候就会产生冲突。

代码冲突发生情况:

  • 多个分支向主分支合并时
  • 同一个分支下 push 或 pull 操作时

处理办法:发生代码冲突需要手动合并代码,选择最终的版本。可以通过图形界面,例如

在哪个分支进行项目开发

不直接在主分支进行开发,而是有技术经理创建独立的开发分支,在独立的开发分支进行开发,最后由技术经理将开发分支合并到主分支。


   转载规则


《》 熊水斌 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
自定义 InputFormatPriorFileInputFormat.java 文件 package org.example; import lombok.SneakyThrows; import org.apache.hadoop.c
2022-11-16
下一篇 
Windows系统下的软件FilesWindows文件资源管理器, 通过Microsoft Store下载 Windows TerminalWindows控制终端 Quicker 快捷方式 OCR识图 翻译 DefenderControl
2022-11-11
  目录