Git 使用教程
安装
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>
代表子分支名。