1.工作流程

                图一

                图二

常用命令:

    1.clone(克隆): 从远程仓库中克隆代码到本地仓库fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

    2.checkout (检出):从本地仓库中检出一个仓库分支然后进行修订

    3.add(添加): 在提交前先将代码提交到暂存区

    4.commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本

    5 . pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge

    6.push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

2.常用远程仓库

    Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有       GitHub、码云、GitLab等。

    gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub。

    码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快。
     GitLab (地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等    内部网络搭建git私服。

3.创建仓库流程

 邀请其他开发人员

直接添加成员,输入成员在gitee的邮箱地址

输入邮箱后,自动提示码云用户信息,确定后点击添加

 

确定成员信息,点击提交

被要求人员,确认加入

被邀请人员,自己登录gitee.com,点击右上角通知,然后进入私信列表,然后点击确认加入

4.git下载与安装(下载好之后,一路下一步就行,安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。)

下载地址: https://git-scm.com/download

备注:

Git GUI:Git提供的图形界面工具

Git Bash:Git提供的命令行工具

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

5.基本配置

先设置用户信息

git config --global user.name “itcast”

git config --global user.email “hello@itcast.cn”

git config --global credential.helper store # git push的时候记住用户名和密码

以上配置信息默认存储在用户目录下,如果设置错误,可以删除以下如图文件,重新操作以上命令即可。

查看配置信息

git config --list

git config user.name

通过上面的命令设置的信息会保存在~/.gitconfig文件中

6.获取本地仓库

要使用Git对我们的代码进行版本控制,首先需要获得构建本地仓库

通常有两种方式:

在本地初始化一个Git仓库

从远程仓库克隆一个仓库

在本地初始化一个仓库

1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库

2)进入这个目录中,点击右键打开Git bash窗口

3)执行命令git init如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功

从远程仓库克隆

可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地

命令为: git clone 远程Git仓库地址

  • clone 私有库,

    用户必须是当前仓库的成员,克隆时必须提供码云平台的登录邮箱及密码

clone 公开库,无需提供用户名及密码

7.操作本地仓库

查看本地仓库的状态
命令形式:git status [-s]

添加工作区到暂存区

命令形式:git add 单个文件名|通配符 ( . 代表全部文件)

添加一个或多个文件到暂存区

取消已跟踪文件

命令形式:git reset 单个文件名或通配符 ( . 代表全部文件)

撤销当前文件或全部内容到修改之前的状态

git reset 是把暂存区的文件撤销到工作区

而 git checkout 文件名 是把工作区的文件恢复到此次文件被修改之前,如果已经add进入暂存区,此命令就没办法了

提交暂存区到本地仓库

命令形式:git commit -m '注释内容' 提交暂存区内容到本地仓库的当前分支

查看日志文件

命令形式:git log

添加文件至忽略列表

一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。 .gitignore 文件,一旦被创建就生效,注意: .gitignore 文件只能用vim编辑器创建,window界面创建不了,下面是一个示例:

# no .a files
*.a
# but do track lib.a, even though you're ignoring .a files above
!lib.a
# only ignore the TODO file in the current directory, not subdir/TODO
/TODO
# ignore all files in the build/ directory
build/
# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
# ignore all .pdf files in the doc/ directory
doc/**/*.pdf

vim常用命令:

        i         ----------  插入(vim  要创建的文件名,进入vim编辑器,按i可以开始编辑)

      ESC    ---------- 退出编辑(这时候就不能编辑了)

      :wq   ---------- 保存并退出,回到命令窗口

      

8.操作远程仓库

添加远程仓库

此操作是先初始化本地库,然后与已创建的远程库进行对接

命令形式: git remote add <远端名称> <仓库路径>

远端名称,默认是origin,取决于远端服务器设置

仓库路径,从远端服务器获取此URL

查看远程仓库

命令形式:git remote

推送到远程仓库

命令形式:git push 【remote name】【branch name】

当你想分享你的代码时,可以将其推送到远程仓库。

查询远程仓库

注意

推送之前,需要先pull远端仓库,如果发现提交版本不一致,出现如下错误:

需要在GIT命令中添加一句代码:--allow-unrelated-histories允许不相关历史进行提交,

从远程仓库克隆

此操作是先创建远程库,本地Clone,然后在基于clone的本地库进行操作,建议按此方式

可以通过Git提供的命令从远程仓库进行克隆,将远程仓库克隆到本地

命令为: git clone 远程Git仓库地址

  • clone 私有库,

    用户必须是当前仓库的成员,克隆时必须提供码云平台的登录邮箱及密码

从远程仓库中抓取和拉取
  • 抓取 命令形式:git fetch【remote name】【branch name】

git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge

  • 拉取 命令形式:git pull【remote name】【branch name】

解决合并冲突

在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。

A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户吐司,故需要先拉取远程仓库代码,经过合并后才能推送代码。在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。

A用户修改代码推送到远程仓库

B用户修改代码提交到本地仓库

B用户修改代码准备推送到远程仓库

9.分支

  几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

在开发中,一般有如下分支使用原则与流程:

  • master (生产) 分支

    线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;

  • test(测试)分支

    从master创建的分支,一般作为测试部门的测试分支,进行预发测试。测试完成后,需要合并到master分支,进行发版上线,中小规模项目可省略此分支;

  • develop(开发)分支

    从test创建的分支,如果开发没有test分支,是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到test分支继续测试,如果没有test分支,可直接合并到master分支。

  • develop_xxx分支

    从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,一般是合并到develop分支。

  • hotfix(bugfix)分支,

    从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。

查看分支

查看本地分支

git branch

查看远程分支

git branch -r

查看所有分支

git branch -a

创建分支

切换分支

分支推送至远程仓库

把b1分支推送至远程仓库的b1分支

合并分支

分支的目标达成后,可以直接合并到主分支上,b1合并到master分支

删除分支

不能删除当前分支,只能删除其他分支

git branch -d b1 删除分支时,需要做各种合并冲突检查,检查失败,删除失败

git branch -D b1 不做任何合并冲突检查,强制删除

git push origin –d b1 删除远程分支 (谨慎操作

转载于:https://www.cnblogs.com/hujunwei/p/11279272.html

我爱Java系列之---【Git的使用教程】相关推荐

  1. 我爱Java系列---【 maven依赖版本冲突的解决方法】

    我爱Java系列---[ maven依赖版本冲突的解决方法] 参考文章: (1)我爱Java系列---[ maven依赖版本冲突的解决方法] (2)https://www.cnblogs.com/hu ...

  2. 我爱Java系列之---【组员在idea中使用Git】

    1.在Idea中配置Git 安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径.选择File→S ...

  3. 我爱Java系列---【mysql基础约束】

    SQL语句分类 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等.关键 字:create,alter,drop等 数据操作语言:简称D ...

  4. 我爱Java系列---【登录案例】

    一.登录案例分析 二.实施流程 1.创建数据库web01,用户表user 代码: CREATE DATABASE web01; USE web01; CREATE TABLE USER( uid IN ...

  5. java 鉴权_我爱java系列之---【JWT实现微服务鉴权(一)】

    JWT介绍 JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息. 一个JWT实际上就是一个字符串,它由三部分组成,头部.载荷与签 ...

  6. 我爱Java系列---【EL和JSTL】

    一.EL表达式 作用:主要就是用来代替JSP中的 <%= %> 这个标签的,他可以简单的用于输出语句 1.输出四大域对象中的内容 ${key} 这样就可以全域查找到四大域对象中的key变量 ...

  7. 我爱Java系列---【分页查询】

    一.需求 查询每个分类下的商品详情 二.实现步骤 菜单页面拼接超链接,传递商品分类主键 分类商品页面接收分类主键数据,向服务器发送AJAX请求 Servlet接收客户端分类主键的数据 调用业务层方法组 ...

  8. java redis hash_我爱java系列---【redis中如何存取hash类型的值(key field value)】

    @Servicepublic class CartServiceImpl implementsCartService {private static final String CART="C ...

  9. java char数组查找_我爱java系列---【在字符数组中查询某个字符串是否存在】

    mysql中的FIND_IN_SET函数 需求:根据省份id,查询可以在该省份下发信息的通道id sql语句: SELECT cpa.CHANNEL_ID id FROM channel_price_ ...

最新文章

  1. charles都踩过哪些坑_那些年我学Java踩过的坑
  2. 倒计时|全场书籍低至 3.5 折起,无门槛包邮!
  3. laravel5.5的定时任务详解(demo)
  4. Centos 开机后,登录时无法输入密码怎么解决
  5. 使用vue-router的meta实现 设置每个页面的title标题
  6. python应用POP3、IMAP、SMTP 协议,获取邮箱验证码
  7. jboss数据源配置
  8. 天池 在线编程 拿走瓶子(区间DP)
  9. 饱和气压与温度的关系_高中物理讲义:固体液体与物态变化第3节《饱和汽与饱和汽压》...
  10. Flash游戏开发常用函数代
  11. Verilog入门教程与实例分享
  12. 制作一个模拟Windows启动界面的文本进度条python
  13. Three.js - 透视相机(PerspectiveCamera)(三)
  14. 在电脑上下载哔哩哔哩中的视频
  15. python 旧照片_DeOldify黑白旧照片着色神器:基于NoGAN的深度学习来实现旧照着色还原...
  16. 中国首份国际贸易企业信息化发展白皮书发布,小满科技后劲十足
  17. jdk1.8的安装教程
  18. $.each()的理解
  19. Cadence Allegro输出钻孔信息文件图文教程及视频演示
  20. 程序员的linux杯子,6款专为程序猿定制的礼品

热门文章

  1. 手把手带你利用栈来实现一个简易版本的计算器
  2. rabbit安装教程
  3. JD旗舰店店铺商品详情接口代码对接教程
  4. 计算机视觉 马尔_【20推免情况】四川大学计算机、软件、网安
  5. WebRTC重要API和音视频分析
  6. pap认证过程_广域网PAP配置及认证
  7. WebRTC应用中如何检测回音
  8. 轻武宽带认证计费系统白皮书2019
  9. Android Studio通过Gradle命令来编译生成打包APK
  10. 模仿Airbnb的悬浮搜索框动画