疫情当头,总算想起来了自己还有个CSDN的账号。web开发零基础起步,看了一个哈佛大学的公开课“CS50’s Web Programming with Python and JavaScript”,把基于python的web开发的内容深入浅出地介绍了一遍,比网上杂乱的教程简洁且十分适合入门,觉得十分有意义,所以在此总结一下笔记,记录一下这个难忘的2020。
整个课程的内容比较丰富,并不是直接从基于python的web框架开始,而是从介绍一些相关工具开始,使整个开发的过程更加便捷高效,而这正是我原本在学习过程中从来没有体验到的。因此第一部分关于Git的内容,一定推荐给需要团队协作的朋友们使用。
这里不多啰嗦,简单来说Git是一个开源的分布式版本控制工具,总体有以下四个重要用途:
而关于GitHub,众所周知一个什么都可以放的云平台(滑稽),可以算是一个云端的代码仓库吧!而且不仅可以存放自己的代码,上面还有着千千万万别人造的轮子等待你的探索。
关于Git的下载及安装,会发现官网的源太慢了,因此可以从国内的镜像(for windows)去下载,下载好以后,一路默认设置安装即可,没有什么特别需要注意的内容。
安装完成以后,在命令行或者软件自带的Git Bash中输入:git version
,看到版本号就宣告成功。
注册方面就不再多说了,登官网去整就行了。
主要谈一下怎么把Git和Github关联起来:
git config --global user.name "替换字段"
和git config --global user.email "替换字段(邮箱)"
完成设置ssh-keygen -t rsa -C "替换字段(邮箱)"
,会在命令行当前所在的目录下生成一个.ssh
的文件夹,找到里面的id_rsa.pub
文件(这里注意会有两个同名文件,通过后缀来区分),然后把这个文件里的内容复制下来。setting
,然后在左边菜单栏中找到SSH and GPG keys
,随后点击右上角的New SSH key
进行SSH密钥的添加ssh -T [email protected]
,出现如下结果便是成功(注意这里别输成自己的邮箱号,否则会出现port 22
的相关错误)Git的命令很多,这里主要捡常用的来说:
git clone
克隆代码仓库git init
代码仓库的初始化git add
将文件添加到仓库git commit -m "some information"
提交文件到仓库并添加注释git push
上传到GitHubgit pull
从GitHub上拉取并整合代码git status
查看代码仓库状态git log
查看当前分支的记录q
就行了git reset --hard (origin/master)
回退到相应版本/到从网上clone时的版本git branch ()
查看/创建新的分支git checkout
转移到相应的分支结合课程里给到的一些内容,以及我自己实现的时候发现的一些坑,在这里展示给大家。
主要两种方法:1)直接从GitHub上创建一个新的仓库,然后直接clone下来用 ;2)自己本地新建一个仓库,再去GitHub上创建一个仓库,然后绑定。第二种方法相对复杂一些,本着研究的心态,这里用第二种方法举个例子:
D:\pycharm\code>git init newrepo
D:\pycharm\code\newrepo>git remote add newrepo https://github.com/miniyang9/newrepo.git
上面的newrepo和那个链接分别是新建仓库的名称,以及GitHub上建的仓库的链接(两边的仓库名最好一致,方便识别)。执行完成以后,可以在D:\pycharm\code
下找到新建的newrepo
,打开以后可以看到里面只有一个.git
文件夹。
首先,我们在仓库中创建一个名为version1.txt
的文件,在其中输入:
this is the first version
a = 1
b = 2
c = 3
随后分别使用git add
和git commit
命令,此时可以看到1 file changed, 4 insertions(+)
,说明文件已经提交成功。利用git log
命令,可以进一步查看此时的文件唯一的commit编号。同时可以看到HEAD->master
字样,说明当前的分支处在master
的分支之下,也就是默认的主分支。
一般,如果我们是通过clone建立的仓库,此时只需要git push
就可以把代码上传到GitHub上面了,但是如果是跟上面流程走的话,需要输入:
git push --set-upstream newrepo master
得到如下的反馈就是上传成功了,此时已经可以在github上看到上传的代码了。
想象此时是多人合作完成某个项目,某人在处理完一段代码以后,将新的内容上传到了GitHub,此时意味着云端的代码已经和我们本地的代码出现一些差异了。因此,我们如果想继续处理并上传的话,只需要git pull
即可同步代码。注意,在这里,要指出如果是方法2创建的仓库很简单,如上操作即可同步;但是如果是方法1克隆的仓库的话,此时往往需要解决一些merge conflicts
,这里不再赘述,会在下面的代码分支汇合部分再提到。
在这里简单举个例子,在GitHub的网页中找到version1.txt
文件,并在线随便修改内容,保存以后在本地命令行使用git pull
命令,就会发现本地的version1.txt
文件已经和云端的文件相统一了。
同理,使用git log
可以看到从云端pull下来的commit编号,以及注释的Update version1.txt
。
在创建分支之前,输入git branch
可以看到当前的工作处在那个分支之上(默认用HEAD来指示),然后我们通过git branch newbranch
来创建一个新的分支newbranch。之后的过程中,就可以使用git checkout newbranch
在两个分支之间切换。
此时,我们将HEAD移到newbranch的分支上,然后打开newrepo/version1.txt
,并修改其中的内容,比如:
this is the version for testing
a = 100
b = 200
c = 300
然后使用git add
和git commit
将该文件提交,通过git log
可以看到新的commit编号已经生成。
随后,首先我们再次打开version1.txt确认修改内容,然后利用git cheakout master
将分支转移到主分支上,然后再次打开version1.txt。Surprise mo**er fu**er!代码居然还原到了master分支上的样子(嘿嘿嘿,我第一次成功的时候确实惊了,原谅我”少见多怪”)利用git log
可以看到主分支上只有两条记录,分别是之前的version1.txt
和Update version1.txt
。到这里,分支创建和它的作用讲的差不多了。
分支创建可以说是为了在不影响源码的情况下,测试新的代码。那么,一旦代码测试完毕以后,就涉及到整合代码的问题了。因此,我们假设newbranch
的代码就是我们测试好了以后的代码,那么我们如何将它与master
汇合起来呢?
首先我们需要把分支移到master
下,然后使用git merge newbranch
就可以汇合了,通过git log
我们可以看到新的a testing version1.1
已经被添加到主分支上了。
这里提一句,其实pull在某种程度上也是一种merge(相当于fetch+merge),只不过pull处理的分支是云端的分支和本地分支,而merge是在处理本地的分支之间的问题而已。
如果在创建完分支以后,分别修改master
和newbranch
中的version1.txt
,比如,
master
下的version1.txt
修改为:
this is the version for testing
a = 100
b = 200
c = 300
d = 400
newbranch
下的version1.txt
修改为:
this is the version for testing
a = 1
b = 2
c = 3
此时,我们使用git merge
命令就会出现merge conflict
的错误提示。
同时,我们打开文件,会看到这样的形式:
this is the version for testing
<<<<<<< HEAD
a = 100
b = 200
c = 300
d = 400
=======
a = 1
b = 2
c = 3
>>>>>>> newbranch
这里<<<<<<
到=====
之间的内容是原本master
中的,而======
到>>>>>>>
则是newbranch
中的,此时我们需要做的就是自行删除不需要的部分,然后重新保存,再通过git add
和git commit
的命令重新去提交就行了。
到此为止,基本上就把git的简单使用就说完了。所以,以后可能就不需要再出现论文初稿.doc
、论文1.doc
、论文2.doc
、… 、论文最终版.doc
了,哈哈哈哈!