相关文章推荐
冷冷的沙发  ·  苹果的下一任 ...·  10 月前    · 
听话的手套  ·  js ...·  2 年前    · 
爱听歌的咖啡豆  ·  The valid characters ...·  2 年前    · 
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds

为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

git与github有什么区别?

git(工具)是一个版本控制工具
github(社区)是一个用git做版本控制的项目托管平台,并附带交友分享功能。。类似的平台还有bitbucket、oschina的码云这里写图片描述(逗逼名字)。 这些平台基本都是以开源项目著称的,当然也提供一定的收费私有化托管服务。 当然(私有化),估计大家还听说过coding、gitlab、gogs,这些都是做一些私有化项目托管的平台。gitlab、gogs都是开源的git托管平台,可以自己私有化部署。
git和svn的区别


svn是一个中心化的版本控制工具

每一个SVN用户都可以从服务器checkout代码,同样也可以像服务器提交(commit)代码,可以更新(update)到别人提交的代码。

优势:所有的操作都需要基于SVN中心服务器,所以操作起来必然很简单。
劣势:正因为所有的操作都要基于SVN中心服务器,所以只要SVN中心服务出现冲突(conflict)、错误(error)都会给整个团队之中的成员带来灾难。

git是一个去中心化的分布式版本控制工具

每一个节点都可以充当控制中心的作用,所以从GIT服务器复制(clone)一份到本地,同样也可以单独对自己的本地git版本进行单独管理。 在针对单个git版本库的操作(commit,pull)就如同SVN的commit与update操作。当然,不同版本库之间的操作就是拉取(pull),推送(push)。

git的命令有很多,如果记不住的话, 可以使用图形化的工具 地址在:https://tortoisegit.org/

理解分支(branch)是什么?

以一个APP为例,我们研发一款移动APP的过程中,必然是一个迭代迭代的来。首先是1.0、1.1、1.2…….2.0…..3.0等等~。

这个时候为了防止影响已经稳定的线上版本,我们必然会对已经上线的版本做一个备份(master分支),使用另一个copy过来的项目进行开发(dev分支)

这样公司的程序员小A就可以在dev分支上开发了,就算开发的时候小A脑残,不小心把逻辑弄错,无法正常运行的时候。我们还有稳定版本的Master分之,可以使用。(当然,你也可以回滚revert)

因为,存在一个本地仓库,我们就可以在一个功能没有完全开发完毕的时候先提交commit到本地仓库,测试好没有问题之后再push到远程git服务器。 避免了,没有开发完成的项目产生任何差池无法处理。

如何进行团队协作?

如果只有一个开发者开发,那么上诉的操作并没有什么大碍。对于实际的开发工作中我们往往是多个开发者共同来开发一个项目。多人修改一个文件必然会出现冲突(conflict); 不同人的思想开发一个逻辑难免会出现漏洞与错误;如何进行code review、代码质量把控、冲突降低才是git的优势。

同理,A、B、C三位员工还是可以在自己的个人分之上进行开发,所有的提交都不会影响到其他人。

尽量可能的降低耦合性就是git版本控制工具的核心思想。每个人都可以在自己的分支尽情操作,直到自己的分配的功能开发完毕。 这个时候就需要,将自己新增的功能回归到dev分支上,与团队其他的成员所开发的功能进行合并。

这个时候,就可以发起合并请求(merge request)

一些特殊需求与操作

线上紧急bug处理,快速发版 一个迭代开始的时候,我们往往相对于上一个迭代修改了很多代码。这个时候,由于开发时间与上线的速度问题,我们很难对上一个线上版本存在的bug进行快速修复。当然,如果出现p0级的bug,我们不得不进行快速修复上线的时候,我们之前设计的分之模型就比较有用了。

如下图所示

因为master分之与线上的代码保持了一直,我们希望临时性处理一些问题,我们就从master分之临时性的拉出一个fix bug分之。 将正在开发的分之切换到fix bug分之,快速修复bug上线。然后在切换到自己的dev_xx分之进行迭代开发,做到的环境的快速切换。

多分支切换,本地修改暂存

使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。

其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用’git stash’就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中。

usage: git stash list 列举出自己的暂存代码

git stash show 查看stash的详情

git stash drop 丢弃 stash

git stash ( pop | apply ) 弹出栈中的stash

git stash branch stash某个分之

git stash [save [--patch] 压入栈stash

git stash clear 清空

  • Git 的安装
  • 创建仓库
简易的命令行入门教程:


Git 全局设置:

 git config --global user.name "superworker"
 git config --global user.email "huyanliang@inpingo.com"
创建 git 仓库:
 mkdir api
  cd api
  git init
  touch README.md
  git add README.md
  git commit -m "first commit"
  git remote add origin https://git.oschina.net/superworker/api.git
  git push -u origin master
已有项目?
 cd existing_git_repo
  git remote add origin https://git.oschina.net/superworker/api.git
  git push -u origin master

公有库开发过程
  • fork仓库
  • 通常fork公有库的Master分支作为当前的开发分支
  • 提交pr
  • pr审核
  • pr合并
-------------------------------------------------------------------------------------------------\ fork仓库 | 提交pr | pr审核 | pr合并     1.克隆仓库 Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。git与github有什么区别?git(工具)是一个版本控制工具github(社区)是一个用git做版本控制的项目托管平台,并附带交友分享功能。。类似的平台还有bitbucke
现在很多公司 开发 都用 git 命令上传代码,极大提高了 开发 效率,因此总结了一些常用 开发 命令。 配置user.name和user.email git config --global user.name ‘your_name’ git config --global user.email ‘your_email@domain.com’ 配置user.name和user.email git config ...
文章目录6.3 团队 协作 6.3.1 远程仓库邀请合作者6.3.1.1 演示图6.3.1.2 接收方6.3.2 跨 团队 合作6.3.2.1 拉 项目 过来6.3.2.2 改 项目 6.3.2.3 本来仓库主人 6.3 团队 协作 6.3.1 远程仓库邀请合作者 因为 GitHub 网络问题,我们都以 Gitee 为例演示 6.3.1.1 演示图 step1 step2 step3 6.3.1.2 接收方 在接收到分享方的连接后,点进去,点接受。就算加入仓库成功了。 然后,成员都可以推送自己的更改
Git 原理入门 团队 协同 开发 要理解 git 使用 原理,就要知道 团队 协同 开发 的概念。就目前我们掌握的知识来讲,如果想要 多人 开发 同一个 项目 ,那只能通过拷贝的方式 A和B同时 开发 了一个 项目 ,同时拷贝给C,由C进行整合,这样做从理论上来说可行,但是会存在很多问题,比如A和B有相同的命名的类或者包名不相同,或者A和B遵循的语法规则不统一,那么在整合时工作量就会很大,还可能会出现一些问题 比如A和B同时创建了一个同名的Servlet,在各自的iede上都能运行,但是当他们拷贝给C的时候,明显在C那儿会出现问题,只要
【mysql】You must reset your password using ALTER USER statement before executing this statement. 97710