一、文档链接
此文档为自己总结的 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 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>
<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
git checkout 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 ,否则不会修改远程库的内容 - 对远程库的操作最好是基于别名,使用链接比较麻烦
|