Milmon's Blog   关于

Git 使用教程

技术2022-10-14? 字? 分钟0

安装

sudo apt-get install git
[sudo] Milmon 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
git 已经是最新版 (1:2.25.1-1ubuntu3.1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。

查看 Git 是否成功安装:

git
用法:git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

这些是各种场合常见的 Git 命令:

开始一个工作区(参见:git help tutorial)
   clone             克隆仓库到一个新目录
   init              创建一个空的 Git 仓库或重新初始化一个已存在的仓库

在当前变更上工作(参见:git help everyday)
   add               添加文件内容至索引
   mv                移动或重命名一个文件、目录或符号链接
   restore           恢复工作区文件
   rm                从工作区和索引中删除文件
   sparse-checkout   初始化及修改稀疏检出

检查历史和状态(参见:git help revisions)
   bisect            通过二分查找定位引入 bug 的提交
   diff              显示提交之间、提交和工作区之间等的差异
   grep              输出和模式匹配的行
   log               显示提交日志
   show              显示各种类型的对象
   status            显示工作区状态

扩展、标记和调校您的历史记录
   branch            列出、创建或删除分支
   commit            记录变更到仓库
   merge             合并两个或更多开发历史
   rebase            在另一个分支上重新应用提交
   reset             重置当前 HEAD 到指定状态
   switch            切换分支
   tag               创建、列出、删除或校验一个 GPG 签名的标签对象

协同(参见:git help workflows)
   fetch             从另外一个仓库下载对象和引用
   pull              获取并整合另外的仓库或一个本地分支
   push              更新远程引用和相关的对象

命令 'git help -a' 和 'git help -g' 显示可用的子命令和一些概念帮助。
查看 'git help <命令>' 或 'git help <概念>' 以获取给定子命令或概念的
帮助。
有关系统的概述,查看 'git help git'。

初始化

初始化 Git

配置 Git:

git config --global user.name "Molmin"
git config --global user.email "milmon@qq.com"

绑定 GitHub

ssh-keygen -t rsa -C "milmon@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/noilinux/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/noilinux/.ssh/id_rsa
Your public key has been saved in /home/noilinux/.ssh/id_rsa.pub
The key fingerprint is:
...
The key's randomart image is:
...

然后复制根目录下 .ssh/id_rsa.pub,在 https://github.com/settings/keys 页面,点击 New SSH Key,Title 任意,Key 输入复制内容,确定即可。

检验是否绑定成功:

ssh -T git@github.com
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Hi Molmin! You've successfully authenticated, but GitHub does not provide shell access.

本地库初始化

在指定文件夹打开终端,输入如下指令:

git init
已初始化空的 Git 仓库于 /home/Milmon/桌面/github/molmin.github.io/.git/

GitHub 项目关联初始化

删除所有关联:

git remote rm origin

添加关联:

git remote add origin git@github.com:Molmin/molmin.github.io.git

查看当前所有关联:

git remote -v
origin	git@github.com:Molmin/molmin.github.io.git (fetch)
origin	git@github.com:Molmin/molmin.github.io.git (push)

上传更新

本地开发后,输入如下指令查看当前项目状态:

git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。

尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git restore <文件>..." 丢弃工作区的改动)
	修改:     index.html

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

输入如下指令提交暂存:

git add --all

此时再次查看项目状态,应为:

git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。

要提交的变更:
  (使用 "git restore --staged <文件>..." 以取消暂存)
	修改:     index.html

提交更新指令(引号内为更新内容说明):

git commit -m "Update"
[master 4a98023] Update
 ... files changed, ... insertions(+), ... deletions(-)
 create mode 100644 index.html
 ...

接着进行最终上传,例如:

git push origin master
枚举对象中: 21, 完成.
对象计数中: 100% (21/21), 完成.
压缩对象中: 100% (11/11), 完成.
写入对象中: 100% (11/11), 1.82 KiB | 116.00 KiB/s, 完成.
总共 11 (差异 10),复用 0 (差异 0)
remote: Resolving deltas: 100% (10/10), completed with 9 local objects.
To github.com:Molmin/molmin.github.io.git
   7aff64d..4a98023  master -> master

注:若是第一次,需使用指令:

git push -u origin master

下载更新

git pull -s subtree origin master
remote: Enumerating objects: 444, done.
remote: Counting objects: 100% (37/37), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 444 (delta 17), reused 29 (delta 14), pack-reused 407
接收对象中: 100% (444/444), 107.76 MiB | 1.13 MiB/s, 完成.
处理 delta 中: 100% (31/31), 完成.
来自 github.com:Molmin/molmin.github.io
 * branch            master     -> FETCH_HEAD
 * [新分支]          master     -> origin/master

子项目

也许你用不到这个板块的内容。

创建一个子项目:

git submodule add git@github.com:topan-dev/TopanUI f/system/ui

也可以使用 -b master 指定分支。

如下载时没有自动下载子项目,可以执行:

git submodule init
git submodule update

更新子目录的分支:(更新全部)

git submodule update --init --recursive

用进入子目录从而更新子模块的方式亦可:

cd mod
git checkout master
git pull origin master
cd ..

删除子分支:

git submodule deinit -f <gitsub>

注:以上 <gitsub> 代表子分支名。

# 技术

Git 使用教程

本文作者:Milmon发布时间:2022-10-14

版权声明:本博客所有文章除特殊说明外,均遵循 CC BY-NC-SA 4.0 协议。