1. 生成并绑定SSH秘钥

1.1. 进入用户主文件夹

$ cd ~

1.2. 生成邮箱对应的SSH密钥

$ ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "qqqqqq@qq.com"

这时~/.ssh目录下会多出id_rsa.gitee 和id_rsa.gitee.pub两个文件,id_rsa.gitee.pub里保存的就是我们要使用的key-f ~/.ssh/id_rsa.gitee指定生成的文件路径和名称,用于区分此密钥使用于哪个代码托管平台,此处以oschina为例对于本地配置多个ssh key,只需要安装上述方式配置生成key,并修改config文件即可。

1.3. 复制密钥至官网绑定SSH密钥

$ cat ~/.ssh/id_rsa.gitee.pub

以 gitee为例:

1.4. 新增并配置config文件

如果config文件不存在,先添加,存在则直接修改

$ touch ~/.ssh/config

在config文件里添加如下内容 (User表示你的用户名)

Host gitee.net
    IdentityFile ~/.ssh/id_rsa.gitee
    User rqc

Host github.com
    IdentityFile ~/.ssh/id_rsa.github
    User rqc

按此语法格式,可继续添加 github.comgitee.com 当代码托管平台的。能解决本地多个ssh key的问题

测试效果:

$ ssh -T git@gitee.com

若返回

Welcome to Gitee.com, [yourname]!

则证明添加成功。

如果返回:

Bad owner or permissions on /home/YourName/.ssh/config

则是ssh config文件权限的问题。在.ssh目录下,执行下面的语句:

$ sudo chmod 600 config

再次执行 $ ssh -T git@gitee.com 查看效果,直到添加成功。

2. 创建全新项目并添加到托管平台

2.1. 设置 Git 全局用户名和邮箱设置:

2.1.1. 添加用户名和邮箱:

git config --global user.name "YourName"   
git config --global user.email "emailAddress@qq.com"

不设置提交用户名会显示Unknown

2.1.2. 删除用户名和邮箱:

git config --global --unset user.name
git config --global --unset user.email

2.1.3. 创建 git 仓库:

$ mkdir MyDir  #新建文件夹   
$ cd MyDir     #进入文件夹
$ git init     #初始化git仓库

2.1.4. 对于单个项目设置用户名和邮箱【推荐】:

$ git config user.name "YourName"   
$ git config user.email "emailAddress@qq.com"

此方式对于不同的代码托管平台可以使用不同的用户名和邮箱。也可是直接编辑config文件:项目文件夹/.git/config

2.1.5. 添加项目说明文件

$ echo "# add some introduction" >> README.md    #创建仓库说明文件并添加内容:README.md   
$ git add README.md               #向仓库中添加README.md文件
$ git commit -m "first commit"    #提交内容   
$ git remote add origin git@gitee.com:YourName/yourRepo.git  #添加远程仓库
$ git push -u origin master       #把修改内容推送到master分支

登录托管平台,查看效果。

2.2. 已有项目添加到托管平台

$ cd existing_git_repo   
$ git remote add origin git@gitee.com:YourName/yourRepo.git  #添加远程仓库地址
$ git push -u origin master           #推送内容到master分支

登录托管平台,查看效果。

3. Git 常用命令

3.1. 查看历史提交记录

$ git log --pretty=oneline

查看工作区的状态

$ git status

查看远程连接

$ git remote -v

修改远程连接

$ git remote set-url origin git@gitee.com/YourName/yourRepo.git

Git pull 强制覆盖本地文件

$ git fetch --all
$ git reset --hard origin/master
$ git pull

4. Git 高级入门

4.1. Git 配置文件

git config 命令,专门用来配置或读取相应工作环境变量。Git配置文件有三种:

/etc/gitconfig 文件,系统中对所有用户都适用的配置。搭配git config 时用--system 选项,读取此文件。~/.gitconfig 文件,用户目录下的配置文件只适用于该用户。搭配git config 时用 --global 选项,读取此文件。项目文件夹.git/config 文件,仅仅对当前项目有效的配置文件。越往下一级配置则会覆盖上层的所有相同配置。

4.2. 设置两个 Git 仓库地址

给 origin 设置两个地址:

$ git remote origin set-url --add git@gitee.com/YourName/yourRepo1.git
$ git remote origin set-url --add git@gitee.com/YourName/yourRepo2.git

在.git/config配置文件显示如下:

[remote "origin"]
url = git@gitee.com/YourName/yourRepo1.git 
url = git@gitee.com/YourName/yourRepo2.git 

[branch "master"] 
remote = origin

提交

$ git push origin master 会同时提交到两个repo

拉取

$ git pull origin master 会同时从两个repo中取得更新。

设置只用来备份的仓库,不会从此仓库更新

$ git remoe origin set-url --add git@gitee.com/YourName/yourRepo1.git    #会同时pull和push
$ git remote set-url origin --push --add git@gitee.com:YourName/yourRepo2.git  #不会pull,只会push

在项目.git/config 里可以看到

[remote "origin"]
url = git@gitee.com/YourName/yourRepo1.git 
pushurl = git@gitee.com/YourName/yourRepo2.git ... 

[branch "master"] 
remote = origin

提交

$ git push origin master //会同时提交看两个repo

拉取

$ git pull origin master //只会从 repo1 里取得更新。

5. 参考文章:

1. Bad owner or permissions on .ssh/config的解决


本文为原创文章,转载请注明出处!欢迎关注任前程博客 https://renqiancheng.com/,第一时间看后续精彩文章。