主要讲解了git在各平台的安装和基本使用,Git能够帮助我们解决文件的提交、检出、回溯历史、冲突解决、多人协作模式等问题,并且大大提升我们的工作效率。
版本管理工具是干什么的?
1.备份文件
2.历史记录
3.回到过去
4.多端共享
5.团队协作
选择公共项目或者私人项目
是否需要创建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 ..." to unstage)
new file: 日记
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." 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文件下的日记成功!
错误:编辑器“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 日记,修改合并后的文件,把它修改成我们第二次想要设置的文件内容,提交!
我们可以看到,远程的版本库已经更新到了我们第二次提交的内容。
然后我们返回第一个文件,查看本地日记文件,发现仍然是原来的内容
所以我们使用 命令:git pull,把第一个文件也更新到和远程库一样的内容
到这里,就使”第一个人”的本地代码,”第二个人”的本地代码,和线上的代码都统一了。完成了一次冲突的解决!
首先,我们先用命令:git log 查看项目的操作记录
然后复制我们要回到的操作的commit码
然后我们使用 命令:git reset –hard b3aab91a614f245faa8b06a4b700dc826a6e02bd
使用命令:git reflog ,会列出我们当前的版本之前的版本号
使用命令: git reset –hard b26902e(回溯过去版本号到现在时间的操作版本号)
我们又恢复到回溯之前的代码。
我们回到项目首页,点击 release
点击 “create a new release”按钮
此时,这个界面就是创建里程碑的界面
点击 “publish release”按钮,我们就创建了一个里程碑
我们可以看到创建的release版本,如果我们的项目是开源的话,别人可能就会根据我们的release版本,下载完整项目。
什么情况下进行分支开发呢?比如:昨天我们软件发布了一个新的版本,但是出现一个BUG,需要马上进行修复。但是我们的master分支,也就是我们默认的分支,已经推送了新的功能的代码,所以我们不能再master分支上立刻进行发布。如果发布的话,就可能把那些没进行过测试的代码带到外面去,引发更严重的问题,此时我们就有必要创建一个新的分支。用发布的版本为基础的情况下,修改BUG完毕再同步到正在开发中的分支上。这样就可以不考虑现有的开发进度的情况下,把这个BUG解决掉。
选择 master下拉框
点击 new ,新建一个分支。
此时,我们可以看到current Branch 下面显示的是 bug分支,此时,我们就完成了一个新的分支的创建,此时我们本地的环境就已经切换到了新的分支当中了。
此时,我们show in finder,找到 日记 文件,打开并修改
关闭,保存。
点击 commit to bug 按钮,提交。
然后,我们如何把新修改的代码合并到master分支的代码中呢?
首先我们切换到master分支当中
表示,我们要把bug分支当中存在,master当中的分支不存在的代码,默置到master分支当中。
此时,master分支当中,就出现了bug分支修复的代码。
除了上面的合并分支的方式以外,我们还有另外一种方式,这种方式可能更适合开源软件的合并。
跟上面一样,show in finder,修改日记文件内容,关闭,保存。
上传修改结果。
然后
在网页的gitBub上打开。
点击“crate pull requeast”
1.多用客户端和工具,少用命令行,除非是在Linux服务器上直接开发。
2.每次提交前,diff自己的代码,以免提交错误的代码。
3.下班回家前,整理好自己的工作区。
4,并行的项目,使用分支开发。
5,遇到冲突时,搞明白冲突的原因,千万不要随意丢弃别人的代码。
6.产品发布后,记得打tag,方便将来拉分支修复bug