git基础

一、git基础概念

git是用C开发的。下面简要介绍下git代码管理的最基本的几个命令:

首先将github上已有的项目,选择Clone with HTTPS

git clone https://github.com/linzhirui1992/Crowd-Counting.git

# 如果觉得仓库太大,可以在 git clone 中加入参数 --depth=1,只拉取最近的一个 revision
git clone --depth=1 https://github.com/linzhirui1992/Crowd-Counting.git

在电脑里能看到的目录就是工作区(Working Directory,如Crowd-Counting文件夹),工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库(Repository)。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

在将新的文件复制到对应子目录下后,用命令git add告诉Git,把文件添加到仓库,实际上就是把文件修改添加到暂存区。执行下面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

git add A_testdemo.prototxt
git add A2_iter_32000.solverstate A2_iter_32000.caffemodel

 用命令git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支,将暂存区内容添加到本地仓库。-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。可以多次add不同的文件后,commit一次提交很多文件。创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

git commit -m "add file"

 git push origin master将本地版本库推送到远程服务器,origin是远程主机,master表示是远程服务器上的master分支,分支名是可以修改的。

git push origin master

 查询当前远程的版本:

git remote -v

直接拉取并合并最新代码:

#示例1:拉取远端origin/master分支并合并到当前分支
git pull origin master 


#示例2:拉取远端origin/dev分支并合并到当前分支
git pull origin dev

二、使用git进行项目版本管理

为规范源代码版本管理,现将各分支表述如下:[3]

1.master分支 

存放的应该是随时可供在生产环境中部署的代码 
当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,都有对应的版本号标签(TAG)。 
分支命名:master 
该分支,由管理员负责维护,其它人只有拉取权限。来自于release分支的合并,供发版使用 
生命周期:伴随着整个项目的生命周期,项目结束时结束。

2.develop分支 

develop分支是每次迭代版本的共有开发分支,从最新的master分支派生(管理员操作) 
当develop分支上的代码已实现了软件需求说明书中所有的功能,派生出release分支(管理员操作) 
分支命名:dev-版本号 
该分支,由开发人员在各自的feature分支开发完成后,合并至该分支。 
生命周期:一个阶段功能开发开始到本阶段结束

3.release分支 

从develop分支派生(管理员操作) 
测试环境中出现的bug,统一在该分支下进行修改,并推送至远程分支。修改内容必须合并回develop分支和master分支。 
分支命名惯例:release-版本号 
生命周期:一个阶段功能开发结束开始,完成阶段功能测试并修复所有发现bug,合并会develop分支结束。

4.feature分支 

在开发一项新的软件功能的时候使用,这个分支上的代码变更最终合并回develop分支 
分支命名惯例:feature-姓名全拼-分支说明-日期 / feature-分支说明-日期 
例:接到一个开发关于cc视频点播替换的任务,你需要从develop分支拉出一个分支,并命名为:release-yuruixin-ccVideo-20171117。然后在该分支下进行开发,开发结束,将该分支合并至develop分支(此时的代码必须为可运行的,不能影响到他人),合并完成删掉该特性分支。 
开发人员的每一个新功能开发都应该在该类分支下进行。 
生命周期:开发一个新功能开始,完成新功能开发并合并回develop分支结束。

5.hotfixes分支 

在master分支发现bug时,在master的分支上派生出一个hotfixes分支,修改完成后,合并至master分支以及develop分支,合并完成,删除该hotfixes分支。 
分支命名惯例:hotfixes-姓名全拼-分支说明-日期 
示例:hotfixes-yuruixin-cclivebug-20171117 
生命周期:发现master分支bug开始,完成master分支bug结束。
 

综上,开发人员需要操作的分支为:

  • feature分支 (开发使用)
  • release分支 (测试中出现的bug修改)
  • hotfixes分支 (master中出现的bug修改)

整个流程可以下图所示

è¿éåå¾çæè¿°

三、git 合并分支

查看远程分支

git branch -a 

查看本地分支

git branch

切换分支

git checkout master

# 创建并切换到新分支
git checkout -b develop

合并分支

git merge develop

# 合并之后提交
git commit -m "update file"

# 然后push到远程仓库master
git push origin master

git pull文件时与本地文件冲突,提示如下信息:

error: Your local changes to 'c/environ.c' would be overwritten by merge.  Aborting.
Please, commit your changes or stash them before you can merge.

这个意思是说更新下来的内容和本地修改的内容有冲突,先提交你的改变或者先将本地修改暂时存储起来。

处理的方式非常简单,主要是使用git stash命令进行处理。

先将本地修改存储起来

git stash

pull内容

git pull

四、打标签(版本号)

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

创建标签

在Git中打标签非常简单,首先,切换到需要打标签的分支上:

$ git branch
* dev
  master
$ git checkout master
Switched to branch 'master'

 然后,敲命令git tag <name>就可以打一个新标签:

git tag v1.0

可以用命令git tag查看所有标签: 

$ git tag
v1.0

 还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

 

git tag -a v0.1 -m "version 0.1 released" 1094adb

操作标签

如果标签打错了,也可以删除:

$ git tag -d v0.1
Deleted tag 'v0.1' (was f15b0dd)

 因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

如果要推送某个标签到远程,使用命令git push origin <tagname>

$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
 * [new tag]         v1.0 -> v1.0

或者,一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
 * [new tag]         v0.9 -> v0.9

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:

$ git tag -d v0.9
Deleted tag 'v0.9' (was f52c633)

然后,从远程删除。删除命令也是push,但是格式如下:

$ git push origin :refs/tags/v0.9
To github.com:michaelliao/learngit.git
 - [deleted]         v0.9

附:

windows 修改现存git账户密码

控制面板 -> 用户账户 -> 凭据管理 -> 点击要修改的git账户修改确认保存即可

 

【参考资料】

[1] 廖雪峰的git教程可以好好看下 https://www.liaoxuefeng.com/wiki/896043488029600

[2] 一些常用命令可以看下 Git常用命令使用大全

[3] https://blog.csdn.net/yuruixin_china/article/details/79061999

[4] git命令行操作指南 https://git-scm.com/book/zh/v1/

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值