最近发现 xv6 实验的远程仓库在 MIT 特定的服务器里,且每个实验在不同的分支,我说做实验时咋总感觉少实验代码。平常我都是将本地仓库 git 到 GitHub 中的仓库,现在的需求则变成了跟踪 MIT 的远程仓库,切换分支,拉取代码并且在做完实验后推送到我的 GitHub 中
设置远程仓库
首先执行命令git remote -v
,查看现有的远程仓库
1 2 3
| ~/xv6(master) » git remote -v origin https://github.com/xQmQ/xv6.git (fetch) origin https://github.com/xQmQ/xv6.git (push)
|
可用看到有一个 GitHub 的仓库,别名是origin
,也是我用来保存的仓库
接下来添加 MIT 的远程仓库,命令是git remote add
,设置别名为labs
1 2 3 4 5 6 7
| ~/xv6(master) » git remote add labs git://g.csail.mit.edu/xv6-labs-2020
~/xv6(master) » git remote -v labs git://g.csail.mit.edu/xv6-labs-2020 (fetch) labs git://g.csail.mit.edu/xv6-labs-2020 (push) origin https://github.com/xQmQ/xv6.git (fetch) origin https://github.com/xQmQ/xv6.git (push)
|
接下来就是有两个远程仓库了,origin
用来推送,labs
用来拉取实验的分支
查看仓库分支
执行git branch -a
,查看当前仓库的所有分支
1 2 3 4 5
| ~/xv6(master) » git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master (END)
|
可用看到现在只有origin
里面的分支,所以需要用git fetch
将labs
中的分支拉下来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| ~/xv6(master) » git fetch labs remote: Enumerating objects: 7008, done. remote: Counting objects: 100% (7008/7008), done. remote: Compressing objects: 100% (3612/3612), done. remote: Total 7008 (delta 3650), reused 6526 (delta 3366) 接收对象中: 100% (7008/7008), 17.19 MiB | 235.00 KiB/s, 完成. 处理 delta 中: 100% (3650/3650), 完成. 来自 git://g.csail.mit.edu/xv6-labs-2020 * [新分支] cow -> labs/cow * [新分支] fs -> labs/fs * [新分支] lazy -> labs/lazy * [新分支] lock -> labs/lock * [新分支] master -> labs/master * [新分支] mmap -> labs/mmap * [新分支] net -> labs/net * [新分支] pgtbl -> labs/pgtbl * [新分支] riscv -> labs/riscv * [新分支] syscall -> labs/syscall * [新分支] thread -> labs/thread * [新分支] traps -> labs/traps * [新分支] util -> labs/util
|
好多实验分支 😅
然后再看一下本地仓库的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| ~/xv6(master) » git branch -a * master remotes/labs/cow remotes/labs/fs remotes/labs/lazy remotes/labs/lock remotes/labs/master remotes/labs/mmap remotes/labs/net remotes/labs/pgtbl remotes/labs/riscv remotes/labs/syscall remotes/labs/thread remotes/labs/traps remotes/labs/util remotes/origin/HEAD -> origin/master remotes/origin/master (END)
|
这时候切换到labs/syscall
,获得实验代码
1 2 3 4
| ~/xv6(master) » git checkout syscall 分支 'syscall' 设置为跟踪来自 'labs' 的远程分支 'syscall'。 切换到一个新分支 'syscall' ~/xv6(syscall) »
|
也找到了相关的代码
1 2 3
| ~/xv6/user(syscall) » find trace.c sysinfotest.c trace.c sysinfotest.c
|
现在就可以在labs/syscall
这个分支上工作