在服务器上配置多个GitHub SSH密钥和Git使用教程
背景:
使用https clone仓库后,再进行 push 和 commit 每次都要输入用户名和密码非常的繁琐,使用ssh key则比较的简单。且有一些时候存在多个人使用同一个账户的情况,因此需要分开存储每个人的ssh key。
步骤0:安装git
-
Windows: 下载并安装 Git for Windows。
-
macOS: 使用 Homebrew 安装:
brew install git
。 -
Linux: 使用包管理器安装,例如在 Ubuntu 上:
sudo apt-get install git
步骤 1:检查是否已有 SSH 密钥
在服务器上检查是否已经存在 SSH 密钥:
ls ~/.ssh
如果看到以下文件,说明已经存在 SSH 密钥:
-
id_rsa
(私钥) -
id_rsa.pub
(公钥)
后面你可以选择直接使用id_rsa.pub作为你的公钥,也可以重新开一个独属于自己的公钥。
步骤 2:生成新的 SSH 密钥对(已经有的可以选择跳过)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com(独特id标识符)"
-
按提示选择保存路径(默认是
~/.ssh/id_rsa
)。 -
设置一个密码(可选,如果不想设置密码,直接按回车)
步骤 3:将公钥添加到 GitHub
-
打开 GitHub。
-
点击右上角头像,选择 Settings。
-
在左侧菜单中选择 SSH and GPG keys。
-
点击 New SSH key
-
-
s
-
在 Title 中填写一个描述(例如
Server Key
)。 -
在 Key 中粘贴刚才复制的公钥内容(
~/.ssh/id_rsa.pub
)。注意一定是.pub公钥文件 -
点击 Add SSH key。
步骤 4:测试 SSH 连接
在服务器上测试是否可以通过 SSH 连接到 GitHub:
ssh -T git@github.com
看到这样的文字就说明成功啦
Hi taichiXD! You've successfully authenticated, but GitHub does not provide shell access.
但是有的时候会出现这样的问题
这个时候需要用 sudo 权限运行 ssh -T 的命令
步骤 5:多密钥管理(单用户可忽略)
如果服务器上已经有其他 SSH 密钥,可以通过编辑 ~/.ssh/config
文件(如果没有需要实现创建cd ~/.ssh; touch config; chmod 711 config)来管理多个密钥。例如:
Host github-taichi
HostName github.com
User git
IdentityFile ~/.ssh/git_rsa
这时候运行(要记得替换Host的名称)
ssh -T git@github-taichi
可以看到欢迎的文字,检查是不是自己的用户名即可。
步骤 6:clone git 端的私有仓库
1. 本地初始化仓库
创建一个新文件夹(mkdir <名字>)
cd 到文件夹的目录下面
执行:
git init
看到下面的结果
2. 设置远程的仓库
注意这里要把原来的git@github.com更换成git@(步骤5设置成的host名称)
git remote add origin git@github-taichi:XOTaichi/PrivacyEncrypt.git
如果设置错了想要修改就执行
git remote set-url origin <新的远程仓库URL>
可以通过
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
设置仓库的主人
3. 查看远程仓库信息
git remote -v
4. 删除远程仓库
git remote remove origin
git使用教程(最基本: add, commit, push, pull, merge, fix conflict)
1. 初始化仓库
如果你是从零开始,需要先初始化一个 Git 仓库。
git init
这会在当前目录下创建一个 .git
文件夹,用于存储版本控制信息(后续可以直接通过add origin连接到远程仓库上,直接进行pull同步操作,和push更新操作)。
如果你要克隆一个已有的远程仓库,可以使用:
git clone <仓库URL>
2. 添加文件到暂存区 (git add
)
在工作目录中修改文件后,需要将文件添加到暂存区(Staging Area),以便后续提交。
-
添加单个文件:
git add <文件名>
-
添加所有修改的文件:
git add .
-
添加特定类型的文件(例如所有
.txt
文件):git add *.txt
3. 提交更改 (git commit
)
将暂存区的文件提交到本地仓库,并附上提交信息。
git commit -m "提交信息"
提交信息应简洁明了,描述本次提交的内容。
4. 推送到远程仓库 (git push
)
将本地仓库的提交推送到远程仓库(如 GitHub、GitLab 等)。
-
推送到默认远程仓库(通常是
origin
):git push origin <分支名>
-
如果远程分支不存在,可以创建并推送:
git push -u origin <分支名>
5. 拉取远程仓库的更新 (git pull
)
从远程仓库拉取最新的更改并合并到本地分支。
git pull origin <分支名>
git pull
实际上是 git fetch
(获取远程更新)和 git merge
(合并到本地分支)的组合。
6. 合并分支 (git merge
)
在开发中,通常会在不同的分支上工作。完成一个功能后,需要将分支合并到主分支。
-
切换到目标分支(例如
main
):git checkout main
-
合并指定分支(例如
feature-branch
):git merge feature-branch
-
如果合并成功,Git 会自动创建一个新的提交记录。
7. 解决冲突 (fix conflict
)
在合并分支或拉取更新时,如果两个分支修改了同一文件的同一部分,Git 无法自动合并,就会产生冲突。
冲突的表现
冲突的文件中会包含类似以下的内容:
-
<<<<<<< HEAD
到=======
之间是当前分支的修改。 -
=======
到>>>>>>> feature-branch
之间是要合并的分支的修改。
<<<<<<< HEAD
这是本地的修改
=======
这是远程的修改
>>>>>>> feature-branch
解决冲突的步骤
-
打开冲突文件,手动选择保留哪些修改(或结合两者)。
-
删除冲突标记(
<<<<<<<
、=======
、>>>>>>>
)。 -
将修改后的文件添加到暂存区:
git add <文件名>
-
完成合并:
git commit
Git 会自动生成一个合并提交信息。