开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第34天,点击查看活动详情
远程仓库
Git作为分布式的版本管理系统,每个终端都有自己的Git仓库。但团队协作还需一个中间仓库,作为中心,同步各个仓库。于是服务端(远程)仓库就来承担这个职责,服务端不仅有仓库,还配套相关管理功能。
可以用公共的Git服务器,也可以自己搭建一套Git服务器。
远程用户登录
Git服务器一般提供两种登录验证方式:
- HTTS:基于HTTPS连接,使用用户名、密码身份验证。
- 每次都要输入用户名、密码,当然可以记住。
- 地址形式:
https://github.com/kwonganding/KWebNote.git
- SSL:采用SSL通信协议,基于公私钥进行身份验证,所以需要额外配置公私秘钥。
- 不用每次输入用户名、密码,比较推荐的方法。
- 地址形式:
git@github.com:kwonganding/KWebNote.git
#查看当前远程仓库使用的那种协议连接:
$ git remote -v
origin git@github.com:kwonganding/KWebNote.git (fetch)
origin https://github.com/kwonganding/KWebNote.git (push)
# 更改为https地址,即可切换连接模式。还需要禁用掉SSL, 才能正常使用https管理git
git config --global http.sslVerify false
🔑远程用户登录:HTTS
基于HTTPS的地址连接远程仓库,Github的共有仓库克隆、拉取(pull)是不需要验证的。
$ git clone 'https://github.com/kwonganding/KWebNote.git'
Cloning into 'KWebNote'...
# 仓库配置文件“.git/config”
[remote "origin"]
url = https://github.com/kwonganding/KWebNote.git
fetch = +refs/heads/*:refs/remotes/origin/*
pushurl = https://github.com/kwonganding/KWebNote.git
推送(push)代码的时候就会提示输入用户名、密码了,否则无法提交。记住用户密码的方式有两种:
- 🔸URL地址配置:在原本URL地址上加上用户名、密码,
https://后加用户名:密码@
# 直接修改仓库的配置文件“.git/config”
[remote "origin"]
url = https://用户名:密码@github.com/kwonganding/KWebNote.git
fetch = +refs/heads/*:refs/remotes/origin/*
pushurl = https://github.com/kwonganding/KWebNote.git
- 🔸本地缓存:会创建一个缓存文件
.git-credentials,存储输入的用户名、密码。
# 参数“--global”全局有效,也可以针对仓库设置“--local”
# store 表示永久存储,也可以设置临时存储
git config --global credential.helper store
# 存储内容如下,打开文件“仓库\.git\.git-credentials”
https://kwonganding:[加密内容付费可见]@github.com
🔑远程用户登录:SSH
SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务,多用来进行远程登录、数据传输。SSH通过公钥、私钥非对称加密数据,所以SSH需要生成一个公私钥对,公钥放服务器上,私有自己留着进行认证。
① 生成公私钥:通过Git指令ssh-keygen -t rsa生成公私钥,一路回车即可完成。生成在“C:\Users\用户名\.ssh”目录下,文件id_rsa.pub的内容就是公钥。
② 配置公钥:打开id_rsa.pub文件,复制内容。Github上,打开Setting➤ SSH and GPG keys ➤ SSH keys ➤ 按钮New SSH key,标题(Title)随意,秘钥内容粘贴进去即可。
SSH配置完后,可用ssh -T git@github.com来检测是否连接成功。
$ ssh -T git@github.com
Hi kwonganding! You've successfully authenticated, but GitHub does not provide shell access.
远程仓库指令🔥
| 指令 | 描述 |
|---|---|
| git clone [git地址] | 从远程仓库克隆到本地(当前目录) |
| git remote -v | 查看所有远程仓库,不带参数-v只显示名称 |
| git remote show [remote] | 显示某个远程仓库的信息 |
| git remote add [name] [url] | 增加一个新的远程仓库,并命名 |
| git remote rename [old] [new] | 修改远程仓库名称 |
| git pull [remote] [branch] | 取回远程仓库的变化,并与本地版本合并 |
| git pull | 同上,针对当前分支 |
| git fetch [remote] | 获取远程仓库的所有变动到本地仓库,不会自动合并!需要手动合并 |
| git push | 推送当前分支到远程仓库 |
| git push [remote] [branch] | 推送本地当前分支到远程仓库的指定分支 |
| git push [remote] --force/-f | 强行推送当前分支到远程仓库,即使有冲突,⚠️很危险! |
| git push [remote] --all | 推送所有分支到远程仓库 |
| git push –u | 参数–u表示与远程分支建立关联,第一次执行的时候用,后面就不需要了 |
| git remote rm [remote-name] | 删除远程仓库 |
| git pull --rebase | 使用rebase的模式进行合并 |
推送push/拉取pull
git push、git pull是团队协作中最常用的指令,用于同步本地、服务端的更新,与他人协作。
🔸推送(push):推送本地仓库到远程仓库。
- 如果推送的更新与服务端存在冲突,则会被拒绝,
push失败。一般是有其他人推送了代码,导致文件冲突,可以先pull代码,在本地进行合并,然后再push。
🔸拉取(pull):从服务端(远程)仓库更新到本地仓库。
git pull:拉取服务端的最新提交到本地,并与本地合并,合并过程同分支的合并。git fetch:拉取服务端的最新提交到本地,不会自动合并,也不会更新工作区。
fetch与pull有什么不同?
两者都是从服务端获取更新,主要区别是fetch不会自动合并,不会影响当前工作区内容。
git pull=git fetch+git merge
- 如下面图中,
git fetch只获取了更新,并未影响master、HEAD的位置。 - 要更新
master、HEAD的位置需要手动执行git merge合并。
# fetch只更新版本库
$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 663 bytes | 44.00 KiB/s, done.
From github.com:kwonganding/KWebNote
2ba12ca..c64f5b5 main -> origin/main
# 执行合并,合并自己
$ git merge
Updating 2ba12ca..c64f5b5
Fast-forward
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
参考资料
- 博客园 | 深入浅出Git教程
- 猴子都能懂的GIT入门
- 廖雪峰的GIT教程
- 电子书《ProGit-Git教程》
- Gitee码云的 Git 大全,真的挺全
- 敏捷过程实践-git代码分支管理规范
- 易百教程-Git教程?
- 在线Git学习+练习
- GUI Clients Git网站上的GUI工具列表
- Git常用指令集合🔥🔥
©️版权申明:版权所有@安木夕,本文内容仅供学习,欢迎指正、交流,转载请注明出处!