一、Git工作流程
clone
(克隆): 从远程仓库中克隆代码到本地仓库checkout
(检出):从本地仓库中检出一个仓库分支然后进行修订add
(添加): 在提交前先将代码提交到暂存区commit
(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本fetch
(抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。pull
(拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+mergepush
(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
二、Git的安装配置
2.1 安装
通过官方地址安装 Git安装地址
2.2 配置中文编码
- 打开
gitbash
执行如下命令
git config --global core.quotepath false
${git_home}/etc/bash.bashrc
文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
2.3 配置常用参数
- 创建常用脚本文件,打开
git bash
vi ~/.bashrc
- 添加如下内容
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
- 使配置生效
source ~/.bashrc
2.4 初始化本地仓库
要使用Git
对我们的代码进行版本控制,首先需要获得本地仓库
我们需要新建一个目录,并且在该目录下打开Git bash
窗口,执行如下代码
git init
看到.git
目录即为创建成功
三、Git基础命令
3.1 add
将文件从工作区->暂存区
# 表示添加一个文件或多个文件到暂存区
git add [FileName1] [FileName2] ……
# 表示添加当前目录下的所有文件
git add .
3.2 commit
将文件从暂存区->本地仓库
# 表示添加一个文件或多个文件到暂存区,[message]表示备注信息
git commit [FileName1] [FileName2] -m [message]
3.3 status
查看当前修改的(暂存区和工作区)状态
git status
3.4 log
查看当前提交日志
git log
查看详细日志(因为上面配置了常用参数)
git-log
3.5 reflog
查看以往的操作日志
git reflog
3.6 reset
版本回退
# 其中[id]为操作或提交日志中的编号id
git reset --hard [id]
3.7 gitignore
一般我们总会有些文件无需纳入Git
的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动 生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录 中创建一个名为.gitignore
的文件(文件名称固定),列出要忽略的文件模式。
vi .gitignore
并且使用通配符进行表示,如以下内容
# 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/
四、 分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离 开来进行重大的Bug
修改、开发新的功能,以免影响开发主线。
4.1 查看本地分支
git branch
4.2 创建本地分支
git branch 分支名
4.3 切换分支
git checkout 分支名
还可以直接切换到一个不存在的分支(创建并切换)
git checkout -b 分支名
4.4 合并分支
先进入一个分支,然后输入需要合并的分支名称
git merge 分支名称
比如我要在master
上合并dev01
# 进入master分支
git checkout master
# 合并分支
git merge dev01
4.5 删除分支
不能删除当前分支,只能删除其他分支
git branch -d dev01
4.6 开发中的分支规范
master
:主分支,用作生产(上线)分支develop
:是从master
创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线 要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线feature
:从develop
创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完 成后合并到develop
分支hotfix
:从master
派生的分支,一般作为线上bug
修复使用,修复完成后需要合并到master