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安装成功。)
下载地址:
备注:
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 公开库,无需提供用户名及密码
命令形式:git status [-s]
添加工作区到暂存区
添加一个或多个文件到暂存区
取消已跟踪文件
命令形式:git reset 单个文件名或通配符 ( . 代表全部文件)
撤销当前文件或全部内容到修改之前的状态
git reset 是把暂存区的文件撤销到工作区
而 git checkout 文件名 是把工作区的文件恢复到此次文件被修改之前,如果已经add进入暂存区,此命令就没办法了
提交暂存区到本地仓库
查看日志文件
命令形式:git log
添加文件至忽略列表
# 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 ---------- 保存并退出,回到命令窗口
添加远程仓库
此操作是先初始化本地库,然后与已创建的远程库进行对接。
命令形式: 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 是从远程仓库获取最新版本到本地仓库,不会自动merge
- 拉取 命令形式:git pull【remote name】【branch name】
解决合并冲突
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户吐司,故需要先拉取远程仓库代码,经过合并后才能推送代码。在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。
A用户修改代码推送到远程仓库
B用户修改代码提交到本地仓库
B用户修改代码准备推送到远程仓库
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的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 不做任何合并冲突检查,强制删除