git上传、版本控制、分支控制
要在本地的文件夹对其进行版本控制或分支控制首先需要将这个文件夹上传到GitHub仓库里,或者从GitHub仓库里clone一个到本地才行,也就是一定要在GitHub里有一个对应的仓库,然后才能进行版本控制或者分支控制。
本地文件上传GitHub仓库
从GitHub进行clone到本地文件夹的话可以跳过此步。
首先在本地创建一个文件夹,使用``git bash`打开该文件夹,如下图所示:
输入 git init
,这句命令会在该文件夹里创建一个 .git 目录。
接下来可以在里面文件夹里面创建一些文件,
之后在git bash中输入git add .
来讲当前目录里所有的变动都加到暂存区,.
表示当前目录。
使用git commit -m "信息"
将你 add 过的内容正式提交到本地仓库(之前的.git目录就是本地仓库),并添加一些注释信息,方便日后查阅。
接下来可以将这个文件夹上传到GitHub中了。
在GitHub建立空仓库:
点击创建后会出现如下界面,注意选择SSH
…or create a new repository on the command line表示如果本地没有仓库,想创建一个仓库可以使用那里的命令。
因为刚刚我们已经创建了一个本地仓库,因此我们现在只需要把本地仓库上传,关注…or push an existing repository from the command line即可。
在本地git bash终端运行以下命令
,也可以在GitHub终端运行,我选择在GitHub终端,不用切来切去:
结果如下
现在这个仓库里已经上传文件了。
版本控制
当要对仓库里的代码进行一些测试时候,比如想测试一下某个代码块,又不想因为测试而打断了当前的进度,导致测试后还得重新写代码恢复到当前版本,当然可以将整个文件复制一下改个名,但是十分麻烦,因此可以使用不同的版本来实现这个功能,当需要进行测试的时候就提交一下当前版本,切换到之前的某个版本测试后再切换回来。
现在为了演示,在之前创建的p1.py文件中写点东西:
上面黄色的字母M表示这个文件被更改过了。
我是用的是vscode,所以下载了一个git插件,也可以直接在git bash中操作,使用插件会方便些:
接下来提交仓库中的更改,在消息框里可以写上对这个版本的注释信息,比如写上v1:
提交后点击同步更改就能上传到GitHub仓库中,退出重进一下GitHub仓库就能看到:
以上的两步相当于 git add .
和git commit -m "v1"
。
由于我们要进行版本控制,因此用上面的方法再这个代码文件里再写点东西,或者重新创建一下文件:
现在假设我们需要切换到v1的版本,也就是没有p2.py文件的版本,使用git reflog
命令查看各个版本:
最近一个v1版本的commit号为 5fccca9
,使用git reset --hard 5fccca9
命令来回退:
可以看到p2.py文件没有了,然后假设你在这做了一堆的测试,也可以作为新的版本进行一波提交。
现在做完了测试,想要退回v2版本了,查看到v2版本的commit号是2159330
,
使用git reset --hard 2159330
来回到v2版本中:
这样就可以了。
分支控制
假设你有多个合作者,那么可以在一个仓库中创建多个分支来进行协作,最后合并到一个分支就行。
我们创建dev分支,然后切换到dev分支,使用git checkout -b dev
命令:
同时也可以看到vscode左下角的分支变成dev了:
可以使用git branch
查看分支
可以在这个分支里面做一些代码的编写并提交,方法和上面”版本控制“一节的一样,注意在这个分支提交后其他分支是看不到提交的内容的,比如我提交了一个v3版本,在main分支里仍然没有,但是在dev分支就有了:
合并分支
若是要合并分支,需要使用git checkout main
命令切换到其他分支,比如main分支,然后使用git merge dev
命令进行合并:
之后可以在GitHub仓库中使用pull request进行合并,也可以在vscode的扩展里使用同步更改进行合并(注意在vscode这么做的话需要切换到main分支中)
在合并后就可以删除分支,在本地仓库中使用git branch -d dev
命令删除,在GitHub中找到``view all branches`直接去到那个分支删除就行:
参考
使用GitHub(二):配置并使用Git创建版本库 - 知乎 (zhihu.com)
使用GitHub(三):使用VSCode+GitHub进行版本控制 - 知乎 (zhihu.com)