引言
做过项目的同学就知道,代码的更新维护备份很重要,因为最近项目要求,需要多人进行协同开发一个项目,所以学习了git与GitHub协同开发,并整理一份学习笔记,以供翻阅。
什么是Git?什么又是GitHub?
众所周知,Git是一个分布式版本管理的工具,Github是一个进行代码仓库托管的开源平台。
对于代码入门小白来说,看了还是一脸懵逼,那他们到底是个什么东西???用他们要干什么???
其实他们就是你的代码管理工具,举个栗子:比如你要写一个项目,就实现一个个人博客的网站好了。你想着快点把自己的帅照po到自己亲手写的个人主页上,所以你立刻开始了写个人主页的代码。这个网站主页呢,你命名为美照meizhao(放你的照片)。
很快啊,你写好了美照区对应的代码文件,但你觉得在这个区得加个自动播放鼓掌功能,但你怕自己新加的功能影响美观,你很聪明,先将现在的美照区文件命名为美照1.0,然后继续开发的美照区命名为2.0版本。但是你欲求不满,觉得自己越写越顺,要的功能越来越多,最后有了n.0版本。
类似这样:
啊啊啊啊啊啊,你最后并没有写完个人博客,因为你疯了。你压根忘记哪一版的美照才是自己要的真正美照。
气抖冷,你说,如果上天再给你一次机会,你要写word日记来记录每次修改。
我笑了,说:“亲,git可以帮你。”
Git能帮你记录每次文件的改动,帮你解放双手,让你不用手动管理多个“版本“。
如果你想要让你写的代码不止存在本地,也流传在网络上,你想让所有人都知道你的美照如何实现的,而且他们中的帅小伙说不定还能与你一起协作开发,那你可以用Github,通过git把代码托管到GitHub上,妈妈再也不担心我把代码一键删除啦。
简单来说,Github是免费的远程仓库,你可以在里面放自己的开源项目。而且它还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。
总结一句话:写代码,用git管理。
如何用git和GitHub开发项目?
如果你是一个人单打独斗,我也建议你用git&GitHub;如果你是团队协作,我更建议你用git&GitHub。
开始使用git
你痛定思痛,决定重新来过,使用git来帮助你进行开发,用代码完成一个沉思录的博客。
首先,你创建了一个叫Thinking
的空文件,你决定在这个目录下完成你的蓝图。
你如何来把它变成一个git可以管理的仓库呢?git init
命令。
你必须在Thinking
文件里执行这个操作,然后就会发现,Thinking
目录中出现了一个.git
的文件。
之后你就可以开始搞事情啦。
版本管理
首先,一开始你就得有个长远的目光,站的高点。你要做的项目不可能一次性写完,中途肯定都会有很多修改的,会加不少功能;而且最后可能发布的版本也不断迭代,从1.0到n.0。所以呢,一开始就得做好版本管理。
如何做好版本管理?
工欲善其事,必先利其器。你得先理解分支
这个概念。这是git的大杀器。
用我的理解,其实分支
就是记录你的工作流。git的分支
一般分为以下几种:
永久性分支
——存在于整个项目的开始、开发、迭代、终止过程master branch
:主分支——它用来存放可以作为产品,能够让用户使用的代码。你现在最终写完的1.0版本个人博客的代码就是放在这里,但是呢,可能两个月后,你的沉思录博客又更新了功能,成了2.0版本了,你也得放在这里。为了便于记录,你每一次master更新的时候,都应该用git
打上标签tag
develop branch
:开发分支——master分支很稳定,仅仅用来发布新版本,干活的话就应该在开发分支。所有的开发者都可以在开发分支干活,代码不断测试,趋于稳定,在合并到master
分支
临时性分支
feature branch
:功能性分支,用于开发项目的功能。每开发一个新功能,最好在dev
分支上新建一个功能分支,对该功能进行开发,开发完成后再合并到dev
分支上,并删除此功能分支。一般命名为feature-*
,*是开发的功能名字bugfix branch
:bug修复分支。修复bug开的新分支。
在每个分支上进行的工作,都需要进行记录并且添加到仓库中。那么如何进行工作记录并更新仓库呢?
Git指令
- 添加文件到git仓库中:
git add <filename>
(可以反复多次使用,添加多个文件) - 删除文件
git rm file
- 修改提交指令
git commit -m <message>
(提交修改信息放入仓库中,每次修改之后都要使用修改提交指令) - 查看仓库当前状态
git status
- 查看修改内容
git diff <file>
- 撤销修改
git checkout --file
- 查看git历史命令
git reflog
- 显示最近到最远的提交日志(3次)
git log --pretty=onefile
- 还原版本(暂存区的修改还原)
git reset --hard <版本ID>
如何进行分支管理?
-
创建分支并切换
git switch -b <branch>
该命令完全体为:git checkout -b|-B <new_branch> [<start point>]
-
把新建的本地分支push到远程服务器:
git push origin <local_new_branch>:<new_branch>
-
查看所有分支
git branch
,列出来的分支前带*
表示当前分支 -
切换分支
git switch <branch>
,比如你创建了一个dev
的分支,干完活后,想要update到主分支上,就得先切换回主分支 -
合并分支
git merge <branch>
,如果想要保存分支记录,使得合并后旧分支信息不丢失,要用--no-ff
指令
git merge --no-ff -m <message> <branch>
-
删除分支
git branch -d <branch>
删除远程分支,即推送一个空分支到远程分支:git push origin :<gitbranch>
PS:不要忘记给
master
分支打标签:- 首先切换到你要打标签的分支上;然后打一个新标签:
git tag -a <标签名> -m <说明文字>
- 查看标签
git tag
- 删除标签
git tag -d <标签名>
- 推送本地标签
git push origin --tags
- 删除远程标签
git push origin:refs/tags/<tagname>
- 首先切换到你要打标签的分支上;然后打一个新标签:
假设你要给你的沉思录博客开发一个记录你思想的功能:
>>> git checkout develop
# 切换到`develop`分支
>>> git checkout -b feature-thinking
# 分出一个功能性分支
>> git add .
>> git commit -m 'finish adding thinking feature'
# 提交更改
>>> git checkout develop
# 回到develop分支
>>> git merge --no-ff feature-thinking
# 把做好的功能合并到develop中
>>> git branch -d feature-thinking
# 删除功能性分支
>>> git push origin develop
# 把develop提交到自己的远程仓库中
使用Github
使用Github的第一步是进行注册Github账号。由于你本地Git仓库与Github仓库之间的传输是通过SHH加密的,所以要进行SSH设置。假设你已经把准备工作做好了,那么现在开始搞事情了。
本地已有Git仓库
如果你本地已经创建了一个Git仓库,又想在Github上创建一个GIt仓库,并让这两个仓库进行远程同步。你需要做的是:
- 登录GitHub,创建一个仓库,勾选readme.md,填入仓库名
- 与本地项目关联
git remote add origin git@github.com:用户名/xxx.git
- 将本地项目push到远程库上
git push -u origin master
,如果本地项目已经push到远程库了,但本地做了些修改(记得先执行git的修改指令git commit -m <message>
,需要把修改push到远程库上git push origin master
如果你是从零开发,我的建议是:你先创建远程库,然后在本地的,你想放置仓库的文件夹下,将远程库Clone下来git clone <https/ssh/githubCLI>
。再进行远程同步。