一、文档链接
此文档为自己总结的 Git 相关操作
链接:https://pan.baidu.com/s/1ALn_IGq4qo9D-EetoWCPqw
提取码:ufx6
二、操作流程
(一)在GitHub上创建新的仓库
- 为你新建的仓库命名
- 添加必要的描述(
此描述相当于写入了Readme.md文件中,将会出现在仓库的首页
) - 选择为公开仓库
- 默认选择添加Readme文件
- Create repository
(二)URL选择
远程 URL 是 Git 一种指示“代码存储位置”的绝佳方式。 该 URL 可能是您在 GitHub 上的仓库,也可以是另一个用户的复刻,甚至在完全不同的服务器上。
您只能推送到两类 URL 地址:
HTTPS URL
,如 https://github.com/user/repo.gitSSH URL
,如 git@github.com:user/repo.git
Git 将远程 URL 与名称相关联,默认远程通常名为
origin
。
1. HTTPS URL
在命令行中使用 HTTPS URL 对远程仓库执行
git clone
、git fetch
、git pull
或git push
命令时,Git 将要求您输入 GitHub 用户名和密码。
但是需要注意的是:从 2021 年 8 月 13 日开始,将在 GitHub.com 上对 Git 操作进行身份验证时不再接受帐户密码,而是使用个人访问令牌 (PAT) 代替密码向 GitHub 进行身份验证。
如何创建个人访问令牌?
单击 Settings
在左侧边栏中,单击 Developer settings
在左侧边栏中,单击 Personal access tokens(个人访问令牌)
单击 Generate new token(生成新令牌)
为你的令牌命名、选择令牌有限期、勾选 repo(要使用令牌从命令行访问仓库)
单击 Generate token(生成令牌)
将令牌复制到剪贴板 (离开此页面后,将无法再次看到令牌)
要像对待密码一样对待您的令牌,确保其机密性。 使用 API 时,应将令牌用作环境变量,而不是将其编码到程序中。
最后强调:个人访问令牌只能用于 HTTPS Git 操作
2. SSH URL
使用 SSH URL 对远程仓库执行
git clone
、git fetch
、git pull
或git push
命令时,系统将提示您输入密码,并且必须提供您的 SSH 密钥密码。
如何生成 SSH 密钥?
以下步骤仅针对 Win 系统, 关于 Linux 系统密钥的生成可参考:GitHub文档。
- 开启 Git Bash
- 命令行中输入:
ssh-keygen -t ed25519 -C "your_email@example.com"
(替换为自己的 GitHub 电子邮件地址) cd ~/.ssh
cat id_rsa.pub
复制打印信息GitHub
的Setting
中找到SSH and GPG keys
- 把刚刚 copy 的秘钥复制进去,取个名字,完成添加~
验证是否成功:
输入
ssh -T git@github.com
如果打印类似如下信息,即完成:
Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access.
(三)Git 操作手册
一、工作区、暂存区、本地库
二、远程库
基于网络服务器的远程代码仓库。一般称为远程库。例如:GitHub
三、Git 本地操作
(一)设置本地用户信息
- 查看信息
git config --global --list # 查看当前 git 的配置信息
- 修改信息
git config --global user.name "username"
git config --global user.email "email"
(二)本地仓库操作
<1> 初始化本地仓库
git init
通过
git status
命令,查询当前仓库的状态。git status """ On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) version1.1/ """
可看到当前仓库是空的,但存在
Untracked files
。
<2> 将文件加入暂存区
git add . # 添加当前路径的全部文件
git add xxx # 也可指定某一文件
git status
查询仓库状态,可看到已被提交的文件。git status """ On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: version1.1/CORE/core_cm3.c new file: version1.1/CORE/core_cm3.h new file: version1.1/CORE/core_cmFunc.h new file: version1.1/CORE/core_cmInstr.h """
git add
命令并没有把文件提交到本地Git
仓库,而是把文件添加到了「临时缓冲区」。
<3> 删除操作
git rm --cached <file> # 删除暂存区文件
git rm <file> # 删除暂存区 以及 工作区文件
# 命令中加入 -r 递归删除文件夹
<4> 将暂存区内容提交到本地仓库
git commit -m "备注信息"
"""
[master (root-commit) efd61b9] first commit
239 files changed, 69507 insertions(+)
create mode 100644 version1.1/CORE/core_cm3.c
create mode 100644 version1.1/CORE/core_cm3.h
"""
git status
查询仓库状态,可看到暂存区的文件已被转存。git status """ On branch master Untracked files: (use "git add <file>..." to include in what will be committed) "git\346\223\215\344\275\234\346\211\213\345\206\214.md" nothing added to commit but untracked files present (use "git add" to track) """
通过
git log
命令,查询历史提交记录。git log """ commit efd61b96d76a559335cc40c1444f71cec48f916d (HEAD -> master) Author: GuoChenHui <1732276547@qq.com> Date: Wed Apr 13 15:44:38 2022 +0800 first commit """
(三)分支操作
一个分支对应一个本地库
HEAD
所指向的是当前分支。
<1> 查询分支
git branch -a # 查询所有分支(本地库 以及 远程库)
git branch -r # 查询所有远程库分支
git branch # 查询所有本地库分支
<2> 创建新的分支并切换当前分支
git branch # 查询现有分支
git branch Gch_branch # 创建 Gch_branch 分支
git checkout Gch_branch # 切换到 Gch_branch 分支
git checkout -b Gch_branch # 相当于上面两句的合并
<3> 删除分支
git branch -d Gch_branch
<4> 合并分支
只会修改执行合并命令时所处的当前分支
git merge
- 合并冲突
当合并分支时,两个分支在同一文件的同一位置有两套完全不同的修改。此时 Git 无法决定选用哪个修改,需要我们人为修改。
四、Git 远程库操作
要提前在 GitHub
创建好仓库
(一)创建远程库别名
使用命令:
git remote add 别名 GiHub仓库链接[https or ssh]
git remote add origin git@github.com:GChenH/NB-IoT.git
(二)查看远程库别名
使用命令:
git remote
git remote
"""
origin
"""
git remote -v # 可以看到每个别名的实际链接地址
"""
# 因为既可以拉取也可以推送,所以有两个。
origin git@github.com:GChenH/NB-IoT.git (fetch)
origin git@github.com:GChenH/NB-IoT.git (push)
""
(三)删除、修改远程库别名
- 删除远程库别名
使用命令:
git remote rm [别名]
git remote rm origin
- 修改远程库别名
使用命令:
git remote rename old_name new_name
git remote rename origin dev
(四)本地库推送到远程库
使用命令:
git push 远程库别名 本地库分支:远程库分支
git push origin master # 本地分支与远程分支相同 可省略冒号后的
(五)远程库拉取到本地库
使用命令:
git pull 远程库别名 远程库分支:本地库分支
git pull origin master # 合并当前本地分支与远程分支 可省略冒号后的
上面命令表示,取回 origin/master 分支,再与本地的 master 分支合并
git pull origin master:dev
上面命令表示,取回 origin/master 分支,再与本地的 dev 分支合并。
(六)拷贝远程仓库到本地
使用命令:
git clone [url]
clone
的仓库已完成初始化以及创建远程库别名(origin
)
git clone git@github.com:GChenH/NB-IoT.git
(七)删除远程库分支
使用命令:
git push 远程库别名 -d 远程库分支
git push origin -d main
"""
To github.com:GChenH/NB-IoT.git
- [deleted] main
"""
五、对开源项目做出贡献
fork
开源项目到自己的仓库中clone
到本地在本地进行调试、修改
push
进fork
的仓库对项目作者发出
pull request
等待其回复
merge or not
六、注意
- 几乎所有的操作都是在本地进行,最后再
git push
到远程仓库 - 在对本地文件做更改后,一定要先更新暂存区,再进行
commit
到本地库,最后git push
,否则不会修改远程库的内容 - 对远程库的操作最好是基于别名,使用链接比较麻烦