开启生长之旅!这是我参加「日新方案 12 月更文应战」的第34天,点击检查活动概况

长途库房

Git作为分布式的版别办理系统,每个终端都有自己的Git库房。但团队协作还需一个中间库房,作为中心,同步各个库房。所以服务端(长途)库房就来承当这个责任,服务端不仅有库房,还配套相关办理功能。

Git入门图文教程⑤-远程仓库

能够用公共的Git服务器,也能够自己建立一套Git服务器。

  • 公共Git服务器,如Github、Gitlab、码云Gitee、腾讯Coding等。
  • 建立私有Git服务器,如开源的Gitlab、Gitea、等。

长途用户登录

Git服务器一般提供两种登录验证方法:

  • HTTS:基于HTTPS衔接,运用用户名、暗码身份验证。
    • 每次都要输入用户名、暗码,当然能够记住。
    • 地址方法:https://github.com/kwonganding/KWebNote.git
  • SSL:选用SSL通信协议,基于公私钥进行身份验证,所以需求额外配置公私秘钥。
    • 不用每次输入用户名、暗码,比较引荐的方法。
    • 地址方法:git@github.com:kwonganding/KWebNote.git

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入门图文教程⑤-远程仓库

$ 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

Git入门图文教程⑤-远程仓库

SSH(Secure Shell,安全外壳)是一种网络安全协议,经过加密和认证机制完成安全的访问和文件传输等业务,多用来进行长途登录、数据传输。SSH经过公钥、私钥非对称加密数据,所以SSH需求生成一个公私钥对,公钥放服务器上,私有自己藏着进行认证。

Git入门图文教程⑤-远程仓库

① 生成公私钥:经过Git指令ssh-keygen -t rsa生成公私钥,一路回车即可完成。生成在“C:\Users\用户名\.ssh”目录下,文件id_rsa.pub的内容就是公钥。

Git入门图文教程⑤-远程仓库

② 配置公钥:打开id_rsa.pub文件,仿制内容。Github上,打开SettingSSH and GPG keysSSH keys ➤ 按钮New SSH key,标题(Title)随意,秘钥内容粘贴进去即可。

Git入门图文教程⑤-远程仓库

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 pushgit pull是团队协作中最常用的指令,用于同步本地、服务端的更新,与他人协作。

推送(push):推送本地库房到长途库房。

  • 假如推送的更新与服务端存在抵触,则会被回绝,push失利。一般是有其他人推送了代码,导致文件抵触,能够先pull代码,在本地进行兼并,然后再push

拉取(pull):从服务端(长途)库房更新到本地库房。

  • git pull:拉取服务端的最新提交到本地,并与本地兼并,兼并进程同分支的兼并。
  • git fetch:拉取服务端的最新提交到本地,不会主动兼并,也不会更新工作区。

Git入门图文教程⑤-远程仓库

fetch与pull有什么不同?

两者都是从服务端获取更新,主要区别是fetch不会主动兼并,不会影响当时工作区内容。

git pull = git fetch + git merge

  • 如下面图中,git fetch只获取了更新,并未影响masterHEAD的方位。
  • 要更新masterHEAD的方位需求手动履行git merge兼并。

Git入门图文教程⑤-远程仓库

# 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常用指令集合

️版权申明:版权一切@安木夕,本文内容仅供学习,欢迎纠正、沟通,转载请注明出处!