前言
我很早就听说过GitHub,但是对于它的使用仅限于从上面下载文件,对于其他的功能一无所知。后来了解到版本管理这个概念,也接触到了一些版本管理软件,例如Git。但是对于Git的使用我一直是一知半解的,这几天系统学习了一下Git的使用,这里正好写一篇笔记总结一下。本菜鸡水平比较次,笔记中难免会出现一些错误,如果有大佬发现的话欢迎指正,谢谢大家!
Git简介
Git是一个非常常用的版本管理软件,可以追踪项目的完成进程,常常和GitHub等代码托管平台一起使用。
使用指南
一些常见词汇
repository: 常常简写为repo,一般来说GitHub上每一个项目都有一个repo,版本管理也是以repo为单位的
clone: 复制操作。把repo从GitHub上复制到自己的电脑上。
branch: 每个项目都会有一个master(main) branch,这个分支是主要的分支。在完成项目时,可以为要实现的每一个功能都开一个branch,开发完成后再merge回到main branch里。branch功能可以保证在开发阶段出现的bug不会影响到其他已完成的部分。
merge: 把其他branch完成的部分合并到主要branch中。
pull request: 可以理解为申请将自己负责的branch合并到master branch中。和其他人合作开发项目时可能会使用到这个。
1. 克隆项目
git clone <repo url>是常用的命令,把代码托管平台上的repo复制到自己电脑上。
在GitHub上点绿色的code键,就可以获取到这个repo的url地址
这里以前端框架vue.js的repo为例。
我使用的克隆的命令就是git clone https://github.com/vuejs/vue.git
把上面的命令复制到terminal中,就可以在当前文件夹中看到一个叫vue的文件夹,里面就是这个项目的所有内容。
除了https link,我们还可以使用ssh link。但是使用ssh就要确保我们本地电脑和GitHub上有一对配对的ssh key,这个链接是怎么在自己电脑上生成ssh key pair的教程docs.github.com/en/authenti…
在拿到新的key之后再参考这个教程把它添加到GitHub上就可以了docs.github.com/en/authenti…
注意: 这个ssh keypair是必须要创建的,因为后续将本地仓库内容上传到到GitHub上时也需要你已经在GitHub上添加上keypair。
2. 把我的代码上传到GitHub上
除了从GitHub上copy别人的代码,我们也可以自己在GitHub上创建一个repo,并把我们自己的代码上传上去。 在GitHub上创建一个空白repo非常简单,可以直接参考这个文档docs.github.com/en/get-star…
除了在GitHub上创建一个空的repo之外,我们还需要在你的本地project中加入版本管理工具。
下面是详细的步骤:
-
cd <working directory>首先走到自己存放项目代码的文件夹。 -
git init这个命令会在你的项目中加入版本管理功能,你可能会发现文件夹里多了一个.git文件 -
git branch -M main创建一个叫main的branch -
git add <filename/.>暂存进度。add后面可以写某个文件的名称,也可以使用”.“来代表暂存所有文件的进度。 -
git commit -m <commit message title> -m <more description>保存进度,其中这两个-m就是对于这次保存的一个描述。
分别对应GitHub commit界面的commit message 和extended description。这个commit message有助于我们辨别每次都做了什么修改,所以这个是非常重要的,要认真填写。
6.git remote add <remote repo url> 这一步会把我们的本地仓库和远程仓库连接起来,方便我们把本地仓库的代码上传到远程仓库中
7.git push -u orgin <branch name> 这一步会把我们本地仓库中的代码上传到远程仓库中,加上-u可以设置默认的upstream,下一次只需要输入git push就能上传了,不需要再次写明orgin和远程仓库的branch。
3.创建新的branch/删除branch
前面说到,使用不同branch的一个目的是把还在开发或者修改的部分和已经完成的部分分开。
-
在创建新的branch之前,我们首先要使用
git branch来查看自己现在在哪一个branch -
然后使用
git checkout -b <branch name>来创建一个新的branch。这个命令会直接把你切换到新的branch中如图,我使用这个命令创建了一个叫
newbranch的新branch,然后自动切换到了这个branch中 -
如果我想要回到
mainbranch,我需要执行git checkout main这个命令,就可以回到mainbranch了。 -
如果想要删除新建的
newbranch本地分支,使用git branch -d newbranch。但是在删除前请记得使用git checkout main退出这个分支。 详细的删除教程可以参见这篇文章:www.freecodecamp.org/chinese/new…
4. merge不同的分支
如果某个项目只有我们自己开发,我们拥有某个repo的所有权,那么我们就可以直接把其他的分支merge到master分支中。 但是如果这个repo是其他人的,我们就没有办法直接merge,就需要创建pull request。 详情可以看这份官方文档docs.github.com/en/pull-req…
5. 撤回保存的进度
如果我们想要撤回上一次add,需要执行下面这个命令:
git reset <filename(optional)>
如果想要撤回上一次commit,需要执行下面这个命令:
git reset HEAD~1
需要注意的是,这个命令只能撤回最后一个commit,如果想撤回其他commit,需要执行下面这些命令:
git log 这个命令可以得到一个commit的hash值,如下图
复制某次commit的哈希值后,按q就可以退出
然后执行下面这个命令,就可以回到任意一次commit
git reset <hash value>
6. 其他常用Git命令
-
git status可以看到你所在文件夹中的文件都已经保存了还是已经修改了还没有保存,或者还没有被Git追踪进度。
Tip: vscode可以很方便的看到每个文件的状态
保存了但还没commitcommit完这个 M 就会消失了
新建一个文件
2.git pull origin 把远程仓库更新的内容同步过来。
小结
以上这些是一些Git的基本操作,Git包括GitHub还有很多其他的打开方式。如果后面接触到了其他的操作,还会更新到这个笔记了。