之前在完成CSAPP的lab时,由于平时没有及时上传到github,只能最后一股脑地上传。我觉得这样没能完整记录下自己的学习历程。所以这次开始s081时,我特地忙活了一晚上就是为了搞清楚怎么把本地的每个lab传到github上的仓库里。
如下图
这里有个隐藏的小问题,如果你本地的git版本是2020年10月1日以前(版本低于2.28),那么本地的默认分支名就是master,而仓库的默认分支名却是main。如果你的git版本较新,跳过下面这段
就像这样
这时上传本地项目到github就可能出现各种fatal error,我采用的是一个相对简单的方法,就是创建自己的仓库时不要勾选这个“Add a README file”,这样仓库创建好后就不会产生默认分支了(如果你在这里勾选了,那就会自动产生一个叫“main”的默认分支)。只有你上传项目到这个仓库时,系统才会给你创建一个与本地分支同名的默认分支“master”。
我们继续
克隆好6.s081到本地后,我们就进入“xv6-labs-20xx”这个文件夹。
输入下列命令查看自己git的配置情况
cat .git/config
也可以直接去文件夹里面看
这里的“remote”就是代表远程github分支,我们可以发现目前这个远程分支的地址就是mit发布labs的地址。
类似的,如果我们想把已完成的lab添加到自己的github仓库里面,也应该在config里面添加一个remote “xxx”
remote “xxx”
url=自己仓库的地址
自己仓库地址的查看方法如下:
接下来我们可以查看自己目前已有的分支
git branch
上面这条命令是查看本地分支
git branch -a
加上“-a”则是查看目前所有的分支情况,红色字体是远程分支,“*”则是表明当前所处于的分支。
接下来,我们开始给.git/config添加一个自己仓库的远程分支
git remote add <分支名字> <你仓库的地址>
在这里添加完远程分支后,使用git branch命令查看发现这个新的远程分支还没有被添加到分支列表。得等到向新的远程分支提交完commit后,这个新的分支才会正式出现在下列的分支列表下。
但是通过查看.git/config文件可以看到确实是有这个新的远程分支
最后是把项目上传到自己的仓库里
使用如下命令
git checkout 分支
git add .
git commit -m "自己想说的话"
git push <刚才创建的远程分支名> <本地分支名>:<远程分支名>
如下图
上传完毕后可以在仓库里发现一条util的新分支,大功告成