第三阶段--分布式版本控制工具Git
一、Git工作流程图
命令如下:
1.clone(克隆):从远程仓库中克隆代码到本地仓库
2.checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
3.add(添加)︰在提交前先将代码提交到暂存区
4.commit (提交):提交到本地仓库。本地仓库中保存修改的各个历史版本
5.fetch(抓取)︰从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6.pull (拉取)︰从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge
7.push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
二、Git安装与常用命令
2.1、Git环境配置
2.1.1下载及安装
下载地址: https://git-scm.com/download
2.1.2、基本配置
打开git base,设置用户信息
git config --global user.name "用户名"
git config --global user.email "邮箱"
查看用户信息
git config --global user.name
git config --global user.email
2.1.3、为常用指令配置别名(可选)
有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。
1.打开用户目录,创建.bashrc文件
部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行touch ~ / .bashrc
2.在.bashrc文件中输入如下内容:
#用于输出git提交日志
alias git-log='git log --pretty=online --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
3.打开gitBash,执行source ~ / .bashrc
2.1.4、解决GitBash乱码问题
1.打开GitBash执行下面命令
git config --global core.quotepath false
2.${git_home}/etc/bash.bashrc
文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
2.2、获取本地仓库
要使用Git对我们的代码进行版本控制,首先需要获得本地仓库
1)在电脑的任意位置创建一个空目录(例如test )作为我们的本地Git仓库
2)进入这个目录中,点击右键打开Git bash窗口
3)执行命令git init
4)如果创建成功后可在文件夹下看到隐藏的.git目录。
2.3、基础操作命令
Git工作目录下对于文件的修改
(增加、删除、更新)会存在几个状态,这些修改
的状态会随着
我们执行Git的命令而发生变化。
本章节主要讲解如何使用命令来控制这些状态之间的转换:
git add (工作区-->暂存区)
git commit (暂存区-->本地仓库)
2.3.1、*查看修改的状态( status )
作用:查看的修改的状态(暂存区、工作区)
命令形式:git status
2.3.2、*添加工作区到暂存区(add)
作用:添加工作区—个或多个文件的修改到暂存区
命令形式:git add 单个文件名|通配符
o将所有修改加入暂存区:git add .
2.3.3、*提交暂存区到本地仓库(commit)
作用:提交暂存区内容到本地仓库的当前分支
命令形式:git commit -m '注释内容'
2.3.4、*查看提交日志(log)
在提交暂存区到本地仓库中配置的别名git log
就包含了这些参数,所以后续可以直接使用指令git log
作用:查看提交记录
命令形式:git log [option]
options
--all显示所有分支
--pretty=oneline将提交信息显示为一行
--abbrev-commit使得输出的commitld更简短
--graph以图的形式显示
2.3.5、版本回退
作用:版本切换
命令形式:git reset --hard commitlD
commitID可以使用
git-log
或git log
指令
查看如何查看已经删除的记录?
git reflog
这个指令可以看到已经删除的提交记录
2.3.6、添加文件至忽略列表
一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以在工作目录中创建一个名为.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
/