开发模式介绍


master为生产环境分支

trunk为测试环境分支

开发分支由程序员自己取名


比如来一个新项目之后,下面步骤都是在本地操作

1.从本地获取远程master最新代码,保证本地master是最新的代码

2.根据master新建一个新的分支

3.开发完成以后,获取远程新的trunk分支代码,保证合并之前本地trunk是最新的代码,把开发分支合并到trunk分支进行测试

4.测试通过以后,获取远程master最新代码,保证合并之前本地master是最新的代码,开发分支合并的master

ps:如果是线上紧急bug,有时候可以在master更改并更新,我们是不允许把trunk分支合并到master分支


gitlab和git操作

一名开发者使用git的步骤

首先告诉ops(一般公司都是运维管理GItLab)要对哪个项目进行开发,ops确认后开通gitlab账号并授权项目到开发者账号,然后安装git客户端

这里以windows安装git bash 2.7的客户端演示一些常用的操作命令,安装过程很简单和装qq一样傻瓜式安装:

现在Windows上面安装git bash 2.7,安装完成后打开如下图:

在E盘上面创建了gittest目录,然后cd到此目录下

要和GitLab通信需要使用秘钥,客户端生成秘钥
$ ssh-keygen.exe -t rsa -C "xiewenming@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/lenovo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/lenovo/.ssh/id_rsa.
Your public key has been saved in /c/Users/lenovo/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:YgzUnNdCsLYNOZXc5FiT6aDZq9Q0emugr0IBT5Z8PwI xiewenming@qq.com
The key's randomart image is:
+---[RSA ]----+
| . ..o.=o=+o |
|. E.. ++*+=. |
| = o..*=.+. |
| o .+==+ . |
| . .==So |
| . .+.+ |
| . o + . |
| . . . o |
| ..o.. |
+----[SHA256]-----+ warren@lenovo-PC MINGW32 /e/gittest (master)
查看公钥
$ cat /c/Users/lenovo/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfrhsM3P/uuzDt6akRTJTfZMESiyfqZO6MOrs1ORalu/8X30e+g8/VCMFUviHfXV9GlbiDALDyVlaVxm10Yp205CafWEnlsjjnLTaFyp9JfBdagbF7HJ0horwpJfPlh6Byu/S9dbI5xj9wOFEclzrSHJzJBmLGfVdC4zkZn4AWkaDAbC7LiOAhHDUG1pFNa/uWBCJwR/POlON6v8BYpbUSOi91a6FIskAO5jiX8Ok0YFTtbUs+s1cQbcfxC4C2Lc/Nj8PyXXGh+JpQxp6m2Zxa26kSRgMc0NaPIhNZqcdPjGwS6ChYW6q6hywf9XvUsYYguV8Hgedo1eAn3rYpbHpsqT xiewenming@qq.com warren@lenovo-PC MINGW32 /e/gittest (master)
登陆到GitLab把公钥拷贝到自己的账号里面

git客户端初始化操作

$ git config --global user.name "xiewenming"

warren@lenovo-PC MINGW32 /e/gittest (master)
$ git config --global user.email xiewenming@qq.com

warren@lenovo-PC MINGW32 /e/gittest (master)
$ git clone git@192.168.x.x:ops/scripts.git

#帮助命令git help

查看分支
$ git branch
* master
创建新分支并切换到新分支
$ git checkout -b test
M GitTongJi.sh
Switched to a new branch 'test'
创建开发分支,不会切换到分支新分支
$ git branch xiewenming
切换到开发分支
$ git checkout xiewenming
修改文件,增加新文件并查看修改状态
warren@lenovo-PC MINGW32 /e/gittest/scripts (xiewenming)
$ vi test1.log
$ vi LogTongji.sh
warren@lenovo-PC MINGW32 /e/gittest/scripts (xiewenming)
$ git add . #增加新文件需要add,add只是把文件添加到本地缓存区,还需要使用commit进行提交
warren@lenovo-PC MINGW32 /e/gittest/scripts (xiewenming)
$ git status
On branch xiewenming
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) modified: LogTongji.sh
new file: test1.log
warren@lenovo-PC MINGW32 /e/gittest/scripts (xiewenming)
$
删除add添加的缓存区文件
$ touch 

warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
$ git rm 1234 #没有add 可以直接用os命令删除
fatal: pathspec '' did not match any files warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
$ git add . warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
$ git rm 1234 #add以后需要用 git rm -f 强制删除
error: the following file has changes staged in the index: (use --cached to keep the file, or -f to force removal) warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
$ git rm -f
rm ''
提交更新并加注释
$ git commit -m "test"
[xiewenming 67c298a] test
files changed, insertions(+), deletions(-)
create mode test.log
create mode test1.log warren@lenovo-PC MINGW32 /e/gittest/scripts (xiewenming)
把本地分支推到gitlab上面
$ git push origin xiewenming:xiewenming
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
To git@192.168.x.x:ops/scripts.git
9e553ab..67c298a xiewenming -> xiewenming warren@lenovo-PC MINGW32 /e/gittest/scripts (xiewenming)
切换到master分支,把xiewenming分支合并到当前分支
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'. warren@lenovo-PC MINGW32 /e/gittest/scripts (master) $ git merge xiewenming Updating 9e553ab..67c298a Fast-forward
LogTongji.sh | +-
test.log | +
test1.log | +
files changed, insertions(+), deletion(-)
create mode test.log
create mode test1.log warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
删除名称为xiewenming的分支 小d也可以
$ git branch -D xiewenming
Deleted branch xiewenming (was 67c298a). warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
删除远程分支为xiewenming的分支
$ git push origin :xiewenming
To git@192.168.x.x:ops/scripts.git
- [deleted] xiewenming warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
查看当前分支的提前日志
$ git log
commit 9e553abcd3582a0481a2884fd0babc3e13b9732a
Author: root <root@192-168-x-.xxx.com>
Date: Mon Jun :: + vi ShangXian.sh 添加删除bak分支 commit f7dc4cd80b0a7550217aac17cd17094a4917831d
Author: root <root@192-168-x-.xxx.com>
Date: Thu Jun :: + add commit 43e4c138499fe478cc397f256de4841c714d8315
Author: root <root@192-168-x-.xxx.com>
Date: Tue May :: + add sh
根据commit id回滚,commit id 可以通过git log查看
$ git reset --hard  9e553abcd3582a0481a2884fd0babc3e13b9732a
HEAD is now at 9e553ab vi ShangXian.sh 添加删除bak分支 warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
查看本地和远程分支
$ git branch -a
master
* xiewenming
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/xiewenming
从创建文件到提交远程master完整的步骤
$ touch 

warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
$ git add . warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage) new file:
warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
$ git commit -m "test"
[master f904e95] test
files changed, insertions(+), deletions(-)
create mode warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
$ git push origin master
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), 1.11 KiB | bytes/s, done.
Total (delta ), reused (delta )
To git@192.168.x.x:ops/scripts.git
9e553ab..f904e95 master -> master warren@lenovo-PC MINGW32 /e/gittest/scripts (master)
更新远程master分支代码到本地
$ git pull origin master
remote: Counting objects: , done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta )
Unpacking objects: % (/), done.
From 192.168.x.x:ops/scripts
* branch master -> FETCH_HEAD
f904e95..75c9baf master -> origin/master
Updating f904e95..75c9baf
Fast-forward
|
file changed, insertions(+), deletions(-)
delete mode

git基础常用维护命令的更多相关文章

  1. Git 基础 —— 常用命令

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 git init 创建 Git ...

  2. GIT中常用的命令

    最近项目中使用到了GIT,所以记录一下GIT中常用的命令. GIT使用的客户端有Git Bash:http://code.google.com/p/msysgit/ 还有乌龟TortoiseGit:h ...

  3. MySQL常用维护命令和操作

    MySQL数据库安装后,除了包括MySQL服务器进程管理外,还提供了大量工具用于管理和维护MySQL服务器的其它工作.下面PHP程序员雷雪松介绍的这些命令都是在MySQL交互界面以外的命令行中执行的. ...

  4. 6.K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令

    1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...

  5. gitlab 常用维护命令

    GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务.Github是公共的git仓库,而Gitlab适合于搭建企业内部私有gi ...

  6. Git 的常用的命令

    之前一直在使用SVN作为版本管理工具,现在项目要求使用Git,下面简单记录一下一些常用的命令.关于原理和使用方式的详细说明,具体教程参考的廖雪峰的git教程. 1. github 账号的申请. 2. ...

  7. Git基础常用功能

    一.安装 具体查看 安装Git 二.使用 基础知识 工作区(Workspace):就是你在电脑里能看到的项目目录. 暂存区(Index / Stage):临时存放更改的地方,使用命令"git ...

  8. svn常用维护命令

    公司版本管理同时用的svn和gitlab,有互补作用 这边写一写慢慢积累自己用过的svn常用维护 查看版本范围之间的变化: [root@192-168-2-82 mnt]# svn log -r 45 ...

  9. git基础常用命令

    常用命令 git init //初始化本地git环境 git clone XXX//克隆一份代码到本地仓库 git pull //把远程库的代码更新到工作台 git pull --rebase ori ...

随机推荐

  1. Servlet------>jsp自定义标签5(标签体内容改为大写)

    5.把标签体内容改为大写(tld中的配置我就省略了,详细请看jsp自定义标签1) import java.io.IOException; import javax.servlet.jsp.JspExc ...

  2. 20165330 2017-2018-2 《Java程序设计》第9周学习总结

    课本知识总结 第十三章 Java网络编程 URL类 URL类是java.net包中的一个重要的类 一个URL对象包含的三个基本信息:协议.地址和资源 协议:必须是URL对象所在的Java虚拟机支持的协 ...

  3. 如何在ubuntu上搭建服务器并且可以使用ftp上传

    参考: 配置ftp:  http://jingyan.baidu.com/article/67508eb4d6c4fd9ccb1ce470.html 配置ftp这个中把 新建 allowed_user ...

  4. How TCP clients and servers communicate using the TCP sockets interface

    wTCP客户端和服务器是如何通过TCP套接字接口进行通讯的.服务器距离.负载,网络拥堵. HTTP The Definitive Guide We begin with the web server ...

  5. Laravel 5.x HTTPS反向代理的实现

    需求 可针对多个域名设置HTTPS并指向到同一个项目. 最先考虑到的是通过nginx的反向代理来实现,最终测试发现效果并不完美. 示例如下: server { listen 127.0.0.1:808 ...

  6. python基础-第十二篇-12.1jQuery基础与实例

    一.查找元素 1.选择器 基本选择器 $("*") $("#id") $(".class") $("element") ...

  7. 如何使用 opencv 加载 darknet yolo 预训练模型?

    如何使用 opencv 加载 darknet yolo 预训练模型? opencv 版本 > 3.4 以上 constexpr const char *image_path = "da ...

  8. Tr A--hdu1575(矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1575 算是模板吧 #include <iostream> #include <std ...

  9. 前端构建工具gulpjs的使用介绍及技巧(一)

    原文链接:http://www.cnblogs.com/2050/p/4198792.html gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非 ...

  10. Redis应用案例,查找某个值的范围(转)

    原文:https://groups.google.com/forum/#!topic/redis-db/lrYbkbxfQiQ 本文来自Redis在Google Group上的一个问题,有一位同学发贴 ...