Git 基础使用(1) 入门指令
Git 基础使用(2) 分支管理
Git 基础使用(3) 远程操作
Git 基础使用(4) 标签管理
分布式版本控制系统
前面介绍的均为((⼯作区,暂存区,版本库)本地操作,但Git的重要功能是分布式版本控制。下图中版本控制服务器,举一个具体的实例,GitHub网站就是一个版本控制服务器。 其核心功能为:用户在权限允许的情况下,从GitHub获取代码、或者推送代码进入服务器。(在国内也有类似与GitHub的网站,例如gitee)
远程操作的具体流程:
创建仓库
(创建远程仓库,以 gitee 网站举例)
① 注册账号
② 新建仓库
克隆仓库
① HTTPS clone
在Linux 命令行中执行以下指令
git clone .......(所创建的仓库地址).......
② SSH clone
- 创建SSH Key :
ssh-keygen -t rsa -C "your e-mail"
(上图中,Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
:这里提示你输入保存密钥对的文件路径。如果你直接按下回车键,密钥对会被保存在默认的位置 /home/ubuntu/.ssh/id_rsa。)
(上图中,Enter passphrase (empty for no passphrase):
这个提示是让你输入一个密码短语(passphrase)来保护你的私钥。这个密码短语可以是任何你想要的字符串,它会用于加密你的私钥文件。如果你不想设置密码短语,直接按回车键即可,这样私钥文件就不会被加密。设置密码短语可以提高私钥的安全性,即使私钥文件被盗,没有密码短语也无法使用。但同时也增加了使用私钥的复杂度。密码短语最好设置一个容易记住但又足够复杂的字符串,以平衡安全性和使用便利性。如果你忘记了密码短语,将无法使用这个私钥进行 SSH 连接,所以请务必记住你设置的密码短语`)
(上图中,Enter same passphrase again:
这个提示再输入相同的密码短语,确认密码。)
- 查看生成的密钥:
在生成的.ssh目录⾥⾯有 id_rsa 和 id_rsa.pub 两个⽂件,这两个就是SSH Key的秘钥对, id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥,可以放⼼地告诉任何⼈
3. 将公钥添加到远程仓库
(id_rsa.pub中的内容为公钥)
- 使用clone指令
6. 多人开发
如果有多个⼈协作开发,GitHub/Gitee 允许添加多个公钥,只要把每个⼈的电脑上的Key 都添加到 GitHub/Gitee,就可以在每台电脑上往 GitHub/Gitee 上提交推送了
远程推送
(本地/用户向服务器推送内容)
- 首先本地和远程仓库保障配置相同
// 在本地配置,且必须和服务器配置的一致
git config --global user.name '用户名'
git config --global user.email '用户邮箱'
- 将本地的分⽀版本上传到远程并合并
// 是已commit的内容
git push
// 推送本地指定分支
git push <远程主机名> <本地分⽀名>:<远程分⽀名>
//推送所有本地分支到对应的远程分支
git push --all
远程拉取
服务本身也可以对仓库里的内容做修改(例如直接在gitee网站里对README.md文件进行编辑),在这种情况下远程仓库(服务器仓库)
的版本是要领先于本地(用户)仓库的。这种需情况下需要先拉取远程仓库的内容。
// 拉取指定远程仓库指定分支的内容
git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
// 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。
git pull <远程主机名> <远程分⽀名>
提交时忽略特殊文件
(远程提交时忽略特殊文件)
在你的 Git 仓库根目录下创建一个名为 .gitignore 的文件(Git 仓库的根目录指的是 .git 目录所在的目录,而不是 .git 目录本身)。
在这个文件中添加你想要忽略的文件或目录的模式。每个模式占一行。例如:
# 在 .gitignore 文件中
# 忽略所有的 .log 文件
*.log
# 忽略 node_modules 目录
node_modules/
# 忽略 .DS_Store 文件(macOS 系统文件)
.DS_Store
# 忽略 build 目录
build/
#.gitignore 文件支持使用通配符和正则表达式来匹配文件和目录。
# 忽略所有 .log 后缀的文件
*.log
# 忽略 build 目录
build/
# 忽略 docs 目录下的所有 .txt 文件
docs/*.txt
# 不忽略 important.log 文件(感叹号表示例外)
!important.log
配置完成后,在执行 git add . 或 git commit 等命令时,Git 会自动忽略掉 .gitignore 文件中指定的文件和目录。
# 无视.gitignore文件的配置,强制执行。
git add -f [filename]