项目开发中git使用的那些事儿

Git作为一个版本工具,现在为大多数公司的技术团队用于代码的版本控制,对其的掌握十分重要,这篇博文旨在从git在工作中的应用场景上做一些基本的介绍,以供公司git新人参考,快速上手。

Git一般分为远程数据库和本地数据库两种,从团队编程角度来看,本地数据库为个人开发所有,当个人的编码任务完成后,可将代码上传到远程数据库为团队共享。

在Git管理中,实际操作的并不是数据库,而是工作树,下图是git管理的一个简单示意图。

 项目开发中git使用的那些事儿_第1张图片

在数据库和工作树之间有索引,索引是为了向数据库提交作准备的区域,最终保存在数据库里的是索引的状态,可以避免工作树中不必要的文件提交,到达灵活操作修改的功能。

话不多说,教程开始。

使用git,首先就得创建git仓库(数据库)。

命令:gitconfig –-global user.name “用户名”   (配置全局用户名

命令:gitconfig –-global user.email “用户邮箱” (配置全局用户邮箱

命令:gitinit (在所在目录创建一个git仓库)

建立git 仓库后,我们通常有两种场景,一种是项目为空,团队所有人一切从头开始;另一种则是中途加入项目,要从已有的代码上进行开发。

1.    场景:从头开发

在目录中编辑任何文档后,将所做修改上传到远端服务器,以供团队共享。

命令: git add .  (将工作树中所做修改加入到索引)

命令: git commit -m “本次提交修改的说明描述”(将所做修改加入到)

命令: git remote add <主机名:origin> <远程地址: https://github.com/xiaoyangkuaipao/simplest-redux-example >(添加远程仓库)

命令: git push <主机名 : origin> <分支名:master>(上传代码至远程仓库)

2.    场景:中途开发

先从远程仓库中获取代码后,再编写代码。

命令: git clone<远程地址: https://github.com/xiaoyangkuaipao/simplest-redux-example> <本地目录:gitTest>(克隆远程仓库到本地)

注意: git默认的远程分支是master,故而如果远程仓库没有master分支,不能直接使用git clone ,而应该使用git clone -b <远程分支名>

获得代码后,我们就可以使用git来管理与其他同事一起编写的代码。

1.    场景:获取新的远程代码前,本地代码的管理方式

⑴ 代码阶段性完成,可使用commit提交本地当前状态

命令: git add .

命令: git commit -m “...”

命令: git pull <远程分支名> <本地分支名>(若两者同名可省略)

⑵ 代码处于不稳定状态,使用stash暂存本地当前状态

命令: git stash

命令: git pull <远程分支名> <本地分支名>(若两者同名可省略)

命令: git stash pop(应用最新stash)

命令: git stash list

命令: git stash apply stash@{num} (多次stash,应用时可指定stash版本)

命令: git stash clear(清空stash)

两者的区别就在于,多次使用commit提交不成熟代码,会造成log的冗余,而stash不会再log中显示,但多次stash会使本地代码在回滚时,产生错乱,因此,应该合理使用者两种方式。

2.    场景:获取不同分支的代码

⑴使用merge合并新的代码

命令: git checkout feature

命令: git merge master

这样就可以将master分支合并到feature分支中,并在feature上产生新的commit,并在log中保存master合并的历史,过多的合并会造成分支历史的污染。

⑵使用rebase合并新的代码

命令: git checkout feature

命令: git rebase master

这样同样可以将master分支合并到feature分支中,但不会在feature上产生新的commit,以及不会再log中保存master合并的历史,从而造成分支历史的污染,但这种合并方式忽略了合并的信息,会给代码回溯造成影响。

两者的差异图示

项目开发中git使用的那些事儿_第2张图片


项目开发中git使用的那些事儿_第3张图片

⑶ 使用cherry -pick获取指定commit中的提交

开发过程中,如果仅仅只需要某一次提交中的代码热更新到测试中时,使用cherry -pick是最合适的。

命令:git cherry-pick

3.    场景: 回退至某次代码提交的commit

(1)    使用git revert撤销某次commit,保留此次操作前其他的commit,并产生一个新的commit来覆盖撤销的commit

命令: git revert

(2)    使用git reset回退至某次commit,此次操作前其他的commit会被移除

命令: git reset

           项目开发中git使用的那些事儿_第4张图片

 

项目开发中git使用的那些事儿_第5张图片

你可能感兴趣的:(前端开发,git,rebase,revert,stash,cherry-pick)