一、引言
最近在工作中遇到了一些 Git 上的问题,虽然解决了,但还是心有不甘,想要去找一本书来系统学习一下 Git(之前都是廖雪峰老师的 Git 教程入门),于是便找到了《Mastering Git》这本书。
学习过程中,我们总会想要去模拟多用户使用 Git 的环境来对比学习 Git 的使用方法,其或者是因为我们想要看到多用户提交的 git log 记录,或者是因为我们想要玩玩 Git 的多分支管理,又或者仅仅是想要看看不同用户角度中的 repository 究竟是什么样的。总之,这些触动都是我写下这篇博客的原因,因为尽管模拟多 Git 用户环境是件很简单的事情,但是网上却没有相关的博客介绍来帮助各位 Git 新人解决这个问题。
这篇博客希望大家可以跟着一起动手做,需要的东西很简单,一个可以正常创建仓库的 GitHub 账号,一个已经安装了 Git 的 PC 电脑(这里我使用的是 Windows 的 wsl Ubuntu 系统)即可。接下来,让我们手把手一起来创建这个有意思的场景吧:)
二、创建仓库与克隆仓库
1. 创建仓库
使用 GitHub 来创建一个远程仓库并不是一件很难的事情,因此这里我也不打算细细的谈论这个。这里我简单的截一个创建本博客使用仓库的图即可:
点击 Create repository 即可。
2. 克隆仓库
当我们创建完了仓库之后,自动会跳转到空白的仓库界面:
这里,可以看到 GitHub 提供给我们的克隆仓库的方法有两个,一个是 HTTPS,另一个则是 SSH。
那么有趣的地方就在这里,这两种方式各有什么区别呢?
简单来说,:
- HTTPS 的方式,当你克隆的时候,需要输入 GitHub 的用户名和密码验证通过后才能成功克隆仓库
- 而 ssh 的方式,需要 ssh key 的授权,而该授权 key 是通过 ssh key 生成器生成的,其生成的公钥需要放到 GitHub 上留存作为认证的凭证,因此当你使用 ssh 的方式克隆仓库时,只要你正确设置了 ssh key 就可以省略输入用户名和密码的操作了
因此,使用 HTTPS 的方式亦或是 ssh 的方式随你而定,前者不用预先配置 ssh key,后者不用输入用户名密码。
这里,我个人使用了 HTTPS 的方式来克隆仓库:
- 创建一个总的文件夹,来用放置多用户本地仓库目录
$ cd ~ $ mkdir Multi_Git_User_Simulate $ cd Multi_Git_User_Simulate
- 输入 GitHub 的用户名和密码,稍微等待即可克隆完成
$ git clone https://github.com/wangying2016/Multi_Git_User_Simulate.git
三、模拟 Git 多用户环境
在上一节中我们已经完成了 GitHub 远程仓库的创建与克隆,现在我们来模拟两个 Git 用户对该远程仓库进行 Git 的基本操作。
1. 我是 Bob,我想要提交第一个文件
将第二节中克隆下来的工作目录重命名为 Bob 的工作目录
$ cd ~/Multi_Git_User_Simulate
$ mv Multi_Git_User_Simulate Multi_Git_User_Simulate_Bob
修改本地用户名为 Bob
$ git config --local user.name Bob
$ git config --local user.name Bob@git.com
Bob 进行第一个文件的提交
$ vi file.txt
This is the first file to be commit.
$ git add file.txt
$ git commit -m "Bob's first commit"
推送远端仓库,等待输入用户名和密码即可
$ git push
此时,我们已经可以在 GitHub 上的远端仓库中看到 Bob 的提交记录了
2. 我是 Alice,我想要修改 Bob 的文件
我们需要模拟出另一个用户 Alice 的本地工作目录,于是按照第二节中的克隆步骤即可(仍然需要输入用户名和密码)
$ cd ~/Multi_Git_User_Simulate
$ git clone https://github.com/wangying2016/Multi_Git_User_Simulate.git
然后重命名项目文件夹名称
$ mv Multi_Git_User_Simulate Multi_Git_User_Simulate_Alice
设置本地 Git 用户信息
$ cd Multi_Git_User_Simulate_Alice
$ git config --local user.name Alice
$ git config --local user.name Alice@git.com
Alice 修改文件
$ vi file.txt
This is the first file to be committed.
$ git commit -a -m "Alice modified file.txt"
推送远端仓库(仍然需要输入用户名和密码)
$ git push
此时,我们又可以在 GitHub 的远端仓库中看到 Alice 的提交记录
至此,我们已经成功使用 git config --local
+ 多 git clone 目录的方式实现了 Git 多用户环境的搭建。
实现了这么一个环境,你想要学习 Git 的多用户协作相关的知识就有实验环境了 ^_^
三、总结
Git 说到底还是一种工具,需要前期的系统的学习外加后期的大量的实战才能够真正玩转它。
希望本篇博客能够给大家一些帮助
To be Stronger:)