版本管理工具介绍—Git篇
2017-12-07 17:51
323 查看
一.版本管理工具作用
主要讲解了git在各平台的安装和基本使用,Git能够帮助我们解决文件的提交、检出、回溯历史、冲突解决、多人协作模式等问题,并且大大提升我们的工作效率。版本管理工具是干什么的?
1.备份文件
2.历史记录
3.回到过去
4.多端共享
5.团队协作
二.版本管理工具发展历史
三.创建一个新的项目
1.新建项目选择公共项目或者私人项目
是否需要创建readMe文件,我们选择需要,我们可以在这个文件中写一些项目描述和修改项
这是检出项目按钮,我们可以通过 “Open in Desktop”按钮,直接打开电脑客户端的gitHub
也可以通过“Download ZIP”按钮,下载项目的压塑包到本地。
我们也可以通过命令行进行操作
1 mkdir WeChat-applet(项目名称)
2 cd WeChat-applet/ —进入文件
3 git clone https://github.com/Goddreamwt/WeChat-applet.git —通过文件地址检出
地址我们在这里复制
四.第一次提交项目
命令: vi 日记 —创建日记文件
编辑完毕后,输入 : ,然后输入wq保存
然后,我希望将创建的文件,提交到版本管理工具中
我先用命令:git status 查看一下工作区的状态
我们可以看到git提示我们,有未跟踪的文件,让我们使用
命令:git add 建立跟踪
然后看到git提示:可以使用”git reset …“撤出暂存区,但是我们要做的是提交,不需要执行撤销的命令。
使用命令:git commit
# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Your branch is up-to-date with 'origin/master'. # # Changes to be committed: # new file: 日记 # # Changes not staged for commit: # modified: README.md
我们看到git要让我们填写变更的提交说明,目的是让我们方便在以后查看历史时,知道当时修改的目的是什么。
我们输入说明,然后输入 “:wq”保存退出
bogon:WeChat-applet mac$ git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: 日记 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.md bogon:WeChat-applet mac$ git commit [master e0c8211] 我新加了一个日记文件 1 file changed, 1 insertion(+) create mode 100644 日记 bogon:WeChat-applet mac$
我们使用命令git push提交,然后输入git注册的用户名和密码,然后显示提交成功!
然后我们再次输入命令:git status,我们可以看到git告诉我们:无文件要提交,干净的工作区
然后,我们进入gitHub的项目主页,刷新一次,就能看到新创建的文件。
点击日记,进入“日记”项目主页
点击按钮,可以直接打开电脑客户端,进行项目检出
然后,我们点击 “show in finder”按钮,打开本地文件
打开日记文件,并添加新的文字,保存。
打开客户端,我们可以看到新修改的内容。
点击Commit to master 按钮,再点击“Push origin”按钮,同步到线上
进入网页项目主页,刷新,我们可以看到我们修改的文件,已经同步到了项目中。
五.和其他小伙伴一起使用
1.关于代码冲突—解决冲突我们创建WeChat-applet2项目,模拟两个人同时提交项目
分别修改日记文件内容,同时提交
修改WeChat-applet文件下的日记成功!
然后修改WeChat-applet2文件下的日记:
此时,git会抛出一个异常
错误:编辑器“vi”出现问题。 请使用-m或-F选项提供消息。 bogon:WeChat-applet2 mac $ git push 到https://github.com/Goddreamwt/WeChat-applet.git ! [拒绝]主人 - >主人(取第一人) 错误:未能推动一些裁判'https://github.com/Goddreamwt/WeChat-applet.git' 提示:更新被拒绝,因为远程包含您所做的工作 提示:没有本地。 这通常是由另一个存储库推送引起的 提示:对同一个参考。 您可能需要先集成远程更改 提示:(例如,'git pull ...'),然后再次推送。 提示:有关详细信息,请参阅“git push --help”中的“关于快速转发的注意事
git建议我们使用git pull把代码拉下来,解决冲突,再次提交。
到https://github.com/Goddreamwt/WeChat-applet.git ! [拒绝]主人 - >主人(取第一人) 错误:未能推动一些裁判'https://github.com/Goddreamwt/WeChat-applet.git' 提示:更新被拒绝,因为远程包含您所做的工作 提示:没有本地。这通常是由另一个存储库推送引起的 提示:对同一个参考。您可能需要先集成远程更改 提示:(例如,'git pull ...'),然后再次推送。 提示:有关详细信息,请参阅“git push --help”中的“关于快速转发的注意事项”。 bogon:WeChat-applet2 mac $ git pull 远程:计数对象:3,完成。 远程:压缩对象:100%(3/3),完成。 远程:共3(delta 0),重用3(delta 0),包重用0 开箱对象:100%(3/3),完成。 从https://github.com/Goddreamwt/WeChat-applet a987b26..9249f2e master - > origin / master 更新a987b26..9249f2e 错误:对以下文件的本地更改将被合并覆盖: 日记 请在合并之前提交您的更改或隐藏它们。 中止
此时,我们发现git帮助我们合并了两个有冲突的文件。
bogon:WeChat-applet2 mac$ git pull Auto-merging 日记 CONFLICT (content): Merge conflict in 日记 Automatic merge failed; fix conflicts and then commit the result. 自动合并日记 CONFLICT(内容):合并日记中的冲突 自动合并失败; 修复冲突,然后提交结果。
我们打开这个文件,能够看到它同时保留了两次修改的记录
然后我们输入命令:vi 日记,修改合并后的文件,把它修改成我们第二次想要设置的文件内容,提交!
我们告诉gitHub,我们已经解决了这次冲突。
我们可以看到,远程的版本库已经更新到了我们第二次提交的内容。
然后我们返回第一个文件,查看本地日记文件,发现仍然是原来的内容
所以我们使用 命令:git pull,把第一个文件也更新到和远程库一样的内容
到这里,就使”第一个人”的本地代码,”第二个人”的本地代码,和线上的代码都统一了。完成了一次冲突的解决!
六.如何回到过去
首先,我们先用命令:git log 查看项目的操作记录
然后复制我们要回到的操作的commit码
然后我们使用 命令:git reset –hard b3aab91a614f245faa8b06a4b700dc826a6e02bd
hard表示指针,是代码回到这个指针指向的时间点的状态
使用命令:git reflog ,会列出我们当前的版本之前的版本号
使用命令: git reset –hard b26902e(回溯过去版本号到现在时间的操作版本号)
我们又恢复到回溯之前的代码。
七,建立里程碑
我们回到项目首页,点击 release
点击 “create a new release”按钮
此时,这个界面就是创建里程碑的界面
点击 “publish release”按钮,我们就创建了一个里程碑
我们可以看到创建的release版本,如果我们的项目是开源的话,别人可能就会根据我们的release版本,下载完整项目。
八,分支开发之分支合并
什么情况下进行分支开发呢?比如:昨天我们软件发布了一个新的版本,但是出现一个BUG,需要马上进行修复。但是我们的master分支,也就是我们默认的分支,已经推送了新的功能的代码,所以我们不能再master分支上立刻进行发布。如果发布的话,就可能把那些没进行过测试的代码带到外面去,引发更严重的问题,此时我们就有必要创建一个新的分支。用发布的版本为基础的情况下,修改BUG完毕再同步到正在开发中的分支上。这样就可以不考虑现有的开发进度的情况下,把这个BUG解决掉。首先打开我们的客户端
选择 master下拉框
点击 new ,新建一个分支。
分支名称起名叫 bug,点击确认
此时,我们可以看到current Branch 下面显示的是 bug分支,此时,我们就完成了一个新的分支的创建,此时我们本地的环境就已经切换到了新的分支当中了。
此时,我们show in finder,找到 日记 文件,打开并修改
关闭,保存。
点击 commit to bug 按钮,提交。
然后,我们如何把新修改的代码合并到master分支的代码中呢?
首先我们切换到master分支当中
表示,我们要把bug分支当中存在,master当中的分支不存在的代码,默置到master分支当中。
此时,master分支当中,就出现了bug分支修复的代码。
九,分支开发之合并到master
除了上面的合并分支的方式以外,我们还有另外一种方式,这种方式可能更适合开源软件的合并。跟上面一样,show in finder,修改日记文件内容,关闭,保存。
上传修改结果。
然后
在网页的gitBub上打开。
点击“crate pull requeast”
10,关于多人合作的一些经验
1.多用客户端和工具,少用命令行,除非是在Linux服务器上直接开发。2.每次提交前,diff自己的代码,以免提交错误的代码。
3.下班回家前,整理好自己的工作区。
4,并行的项目,使用分支开发。
5,遇到冲突时,搞明白冲突的原因,千万不要随意丢弃别人的代码。
6.产品发布后,记得打tag,方便将来拉分支修复bug
相关文章推荐
- 慕课网:版本管理工具介绍—Git篇
- 基于liunx的版本管理工具介绍—Git篇
- 版本管理工具介绍—Git篇
- 版本管理工具介绍——SVN篇(一)
- SVN版本管理工具介绍
- 版本管理工具介绍——SVN篇(二)
- 慕课网:版本管理工具介绍-git
- 版本管理工具介绍-Git
- 版本管理工具gitlab安装以及配置介绍
- 版本管理工具介绍(SVN篇)--慕课网笔记
- git版本管理工具用法介绍
- (转)版本管理工具介绍——SVN篇(一)
- 数据库版本管理工具Flyway(4.0.3)---介绍(译文)
- (转)版本管理工具介绍——SVN篇(二)
- svn(Subversion)版本管理工具入门介绍
- 源代码管理工具SVN的使用(一)(大体介绍)
- 数据库版本管理工具--Flyway的使用
- web管理工具介绍
- 源代码管理工具 一一 SVN-版本回退、文件删除、查看版本信息
- Git版本管理工具[转载]