使用git branch dev
创建本地仓库分支dev,我们平时在dev分支上工作,而master作为主分支,我们不动它。在合并到master分支前,不管在dev分支上如何操作,都不会影响到主分支。当dev分支合并到master分支,我们删除dev分支,准备推送到远程仓库。在推送到远程仓库前,通过上篇版本穿梭的有效命令行,可以进行版本切换回退、撤销修改、删除文件等操作,从而避免文件丢失的问题。
GitHub
通过SSH加密本地Git仓库和GitHub仓库之间的传输:
- 创建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
- 在用户主目录里找到
.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个文件是SSH Key的秘钥对,id_rsa
是私钥,id_rsa.pub
是公钥 - 登录GitHub,添加SSH Key,在Key文本框里粘贴
id_rsa.pub
文件里的内容
GitLab
GitLab作为Git服务端部署在公司一台闲置电脑上,类似于服务器,用于托管公司研发项目。
SSH
SSH,是一个加密验证连接的方式,很多远程连接操作使用SSH。SSH和https比,更加安全,使用Git协议速度更快。
生成SSH秘钥
- 未使用使用生成过SSH秘钥
ssh-keygen -t rsa -C "your_email@example.com"
- 找到
.ssh
目录下的两个文件,分别是id_rsa
和id_rsa.pub
id_rsa
id_rsa.pub
- 如果有过关联其他服务器的SSH密钥,且需要同当前GitLab隔离
ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/gitlab
- 最后的“gitlab”即为自定义的SSH文件名,然后再.ssh文件夹中创建config文件,在其中输入
gitlab (如果邮箱不同也可在此处注释)
Host gitlab.com
HostName 192.168.2.156
User git
IdentityFile ~/.ssh/gitlab
- 对于原SSH也可以用这种方式分配路径。同时,这种方法也可以用来配置多GitHub账户。比如说同一设备同时使用GitLab和GitHub时需要在config里分配路径。
配置多GitHub账户
- 首先找到
.ssh
文件,文件中包括github
、github.pub
、gitlab
、gitlab.pub
、known_hosts
等文件 - 添加
config
文件,对SSH分配路径,如下所示
# gitlab
Host gitlab.com
HostName 192.168.2.156
User git
IdentityFile ~/.ssh/gitlab
# github
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/github
- 由于192.168.2.156与gitlab.com间存在映射关系,所以需要重新关联远程仓库
- 首先
cd 文件夹
- 然后与远程仓库取消关联
git remote rm origin
- 最后重新关联远程仓库
git remote add origin git@gitlab.com:far/gitGuide.git
GitLab中配置公钥
打开id_rsa.pub
复制公钥,粘贴到GitLab中的个人资料设置/SSH密钥里面。
测试SSH连接
ssh -T git@192.168.2.156
如果配置多SSH,直接可以使用gitlab.com测试,即
ssh -T git@192.168.2.156
如果测试成功会出现
Welcome to GitLab, USERNAME!
添加远程库
本地仓库关联远程仓库
git remote add origin git@github.com:far/learngit.git
把本地仓库的内容推送到GitHub仓库
$ git push -u origin master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 13.73 KiB, done.
Total 23 (delta 6), reused 0 (delta 0)
To git@github.com:far/learngit.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
$ git push origin master
在第一次推送到远程后,以后都用git push origin master
命令,把本地master分支的最新修改推送至GitHub。
从远程库克隆
从远程库克隆一个仓库,首先要知道该远程仓库的地址,然后再使用git clone
命令进行克隆。
Git支持多种协议,包括https,但是ssh支持原生的git协议速度最快。
$ git clone git@github.com:far/gitskills.git