一次Git学习之旅

图片来源:https://git-scm.com/

个人认为,Git是对开发人员沟通协作要求更高的源代码版本管理系统,使用元数据来管理代码。

Git不同于集中式的SVN,是一种分布式的源代码管理系统,Git在本地有完整的代码仓库,在本地也可以实现版本控制和分支管理。通过添加远程仓库的的方式,就可以实现Git所推崇的多分支多仓库的源代码版本管理理念。

在第一次在团队正式任务中引入使用之前,进行过几次局部尝试,逐步的了解了一些Git的基本操作和原理,也看过一些文章,知道有Gitlab-flowGithub-flowFeature Branch等常用的Git工作流,一直在平时的工作中进行小的尝试。

正好在结合使用CI集成环境,进行快速开发的过程中,在团队中尝试推行了一次Git工作方式,使用的过程中也没有要求一上来就能达到某种工作流的最佳实践,以解决实际开发中的团队协作开发作为知道方针,进行开放的探索;结果在使用过程中,收获非常大, 基本上在过程中掌握了所有常用的Git命令和工具。记录下这次学习探索之旅,分享出来,希望对有兴趣学习Git的人有帮助。

1、项目的创建

这次开发的demo项目要使用某个CI工具进行自动化构建,并且一键部署到演示服务器上,所以选用了可以免费创建代码库的Gitlab,配合Gitlab CI进行开发和演示;这里用到里代码库创建和远程库跟踪的命令

git init
git remote add origin https://git.coding.net/liuwill/webPageTest.git
git pull

当然如果本地还没有任何代码,可以使用git clone来直接克隆远程库git clone https://git.coding.net/liuwill/webPageTest.git

2、第一次提交代码

在Git的原理里面,新创建或者编辑过的代码,是在工作区里面,而提交的意思,就是将代码保存到本地仓库,中间有一个暂存区,要提交的代码必须先添加到暂存区,才能提交到本地仓库。具体用到了add和commit命令;在提交代码之前,涉及到的操作包括:将文件添加到暂存区,提交暂存区的代码到本地存库;添加新文件;删除错误添加的文件。

git add .
git commit -m 'first commit'

执行过程中,可以使用git status命令,查看当前的工作区和暂存区的情况。
如果在过程中,修改了某个文件,或者添加了新文件,可以执行命令git add filename,将文件添加在暂存区。如果添加暂存区之后,不想重新发起一次commit,可以git commit --amend,这样可以把暂存区的文件,合并到上一次commit中。
此外还可以使用git rm filename --cached来将添加到暂存区中的文件,从暂存区移除,但是保留本地副本。

文件在git中的生命周期

3、将修改过的代码推送到远程仓库

完成代码编辑和本地仓库的代码提交之后,就可以将代码推送到远程仓库

git remote -v
git push origin master

第一个命令可以查看本地仓库中已经添加的远程仓库;第二个命令,将本地的master分支推送到origin命名的远程仓库,且使用master分支;如果添加-u参数,那么origin/master就会设为本地master分支的跟踪分支;如果不想推送到远程仓库的master分支,执行git push origin master:develop,可以把本地的master分支推送到远程仓库的develop分支上。

4、创建新分支

在开发过程中,git推荐使用多分支进行开发,根据不同的工作流,可以有不同的分支命名规范可以采用;

通常可以默认采用git flow进行开发;
1、一般会在develop分支中进行开发,然后在发布的时候,将代码合并到master分支;
2、如果需要,还会使用feature branch、hotfix branch和release branch分别用来进行特性开发、修复补丁、或者发布版本

git branch new-branch
git checkout -b new-branch

两种命令都可以用来创建新的分支,checkout直接将当前工作分支切换到新建的分支上

5、获取远程分支代码

如果需要获取远程分支,或者同步最新的代码,可以直接git pull origin develop,从远程仓库拉取origin/develop分支。
或者使用fetch命令

git fetch origin develop
git log -p develop..origin/develop
git merge origin/develop

执行之后,就可以把远程仓库的develop分支合并到本地的当前工作分支下。

6、在分支中进行开发

如果在团队中使用feature branch进行开发,并且多个feature同时进行开发的话,开发过程中,不同的特性完成并合并到主分支的时间是不一样的,在最后合并代码的时候,可能会产生将多的冲突需要处理。这个时候可以使用rebase命令,在开发过程中,及时同步最新的代码,从而避免最后merge的时候,处理大量的冲突;

git checkout master
git pull
git checkout feature-x
git rebase master

如果出现代码冲突的话,打开文件处理冲突,处理完之后,可以继续进行rebase

git add conflict_filename
git rebase --continue

如果要放弃本次合并,使用git rebase --abort命令,就会取消本次rebase操作。在rebase之前。

7、处理开发过程中的冲突

如果在合并代码,或者获取远程仓库代码之前,本地还有不想提交或者未完成的代码,可以使用stash命令,先将代码放到栈中暂存起来,等完成代码更新之后,在取出未完成的代码,继续进行操作。具体操作如下:

git stash
## do something
git stash list
git stash pop stash@{0}

8、远程仓库管理

此外,在开发过程中,因为持续集成部署的需要,可能会使用不同的远程仓库来完成不同的构建策略;或者对远程仓库的代码进行管理,还用到了一些基本的命令;

删除远程分支:git push --delete origin feature-x
添加多个远程仓库:git remote add deploy http://giturl/repo.git
将代码强制推送到远程仓库:git push -f deploy develp

这篇文章是系列文章的第一篇,简单的介绍了在一次Git团队协作开发中用到的基本命令,接下来的一系列文章中,将会分主题对git学习使用过程中的各种相关知识和体会进行介绍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,661评论 9 163
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,699评论 1 17
  • 2017年4月2日 1.感恩父母帮助照顾孩子。 2.感恩儿子让我享受到幸福,现在越来越会表达自己的感受了。 3.感...
    冯梓源阅读 229评论 0 0
  • 我和王先生相识于最俗不可耐的相亲中。 相识半年结婚了。 说句笑话,领证之前我俩仅仅牵过手,听起来有点像豪赌,赌注是...
    一心飞扬阅读 666评论 3 8
  • 春天是万物复苏的季节,最适合踏青外游,今天一大早,约了大帮好朋友又上山了,山上的景色特别好,春风抚面,绿树成荫,从...
    惠芝阅读 258评论 1 0