Git概念及安装
Git
为分布式版本控制系统,相比较于集中型的版本控制系统最大的特点是记录快照而非差异比较。使用Hash
散列来记录快照。-
Git
使用中的几个概念:本地仓库:存在于本地的版本管理仓库,
远程仓库:对本地仓库的一个备份,另可以作为多人协作的类似共享仓库的概念。
三个工作区:工作区(独立的内容,在此基础上修改或者新增),Git仓库(项目元数据和对象数据库的地方),暂存区域(是一个文件,保存下次将提交文件列表信息,被称为索引)。
Git
支持在Windows,Linux,macOS运行,在Ubutun系统下安装使用:sudo apt install git
命令即可。-
安装完成后配置用户信息,设置的配置文件会在
~/.gitconfig
文件中。该配置文件针对该用户下的建立的所有Git
仓库都有效。常用的配置信息如下(配置一次即可):# 配置提交时的用户名和邮箱 ~ git config --global user.name "YuanJianfeng" ~ git config --global user.email "93628775@qq.com" # 配置颜色自动以及git使用时的默认编辑器为vim ~ git config --global color.ui auto ~ git config --global core.editor vim # 解决git log命令显示时的提交注释中文乱码以及中文文件名16进制显示问题 ~ git config --global i18n.commitencoding=utf-8 ~ git config --global i18n.logoutputencoding=utf8 ~ git config --global core.quotepath false
Git常用命令
-
建立仓库:可使用以下两种方式:
#1 在现有目录中初始化仓库。会在该目录下生产.git目录,--bare参数直接生成仓库,用在仓库服务器,之后与远程仓库关联 git-demo1:$ git init git-demo1:$ git remote add origin git@gitee.com:ccczyl2006/git-demo1 #与远程仓库关联 git-demo1:$ git push -u origin master #推送到远程仓库的master分支并建立关联。注意仓库必须本地有提交 #2 远程克隆现有的仓库。会在当前目录下创建仓库名对应的目录.建立spring-framework目录 ~ git clone https://github.com/ccczyl2006/spring-framework
-
git
的工作流程:git add [参数]
命令增加工作区文件到暂存区。#1 git add 用于增加未被纳入版本库的文件和自上次提交后的文件有新的修改的文件到暂存区 #1.1 增加具体的文件到暂存区 git-demo1:$ git add README #1.2 当前版本库下的所有文件 git-demo1:$ git add .
-
git commit -m '简短说明'
:该命令把暂存区中的文件提交到版本库。git-demo1:$ git commit -m 'first commit' [master 00e30ba] first commit 1 file changed, 6 insertions(+) create mode 100644 index.html
-
git status
::显示git
仓库的状态。下述输出表示文件还未纳入版本系统管理。# git status: 显示git仓库的状态, 带参数-s表示使用简短的信息显示git仓库状态。??表示未纳入版本库,M表示文件修改.在oh-my-zsh的git插件支持下,两命令的简写为gst和gss(带-s参数) git-demo1:$ git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) README nothing added to commit but untracked files present (use "git add" to track)
-
git log
:查看历史提交信息,支持格式化信息显示:-
-p
选项:用来显示每次提交的内容差异。-n
选项:n代表数组,显示最近n次的提交。 -
-stat
选项:提交的简略的统计信息。--oneline
:每一次提交单行显示。 -
--graph
:图标方式显示,存在分支合并的情况下显示非常直观。 -
--pretty
选项:使用不同默认格式的方式展示提交历史.包括以下子选项:oneline
,short
,full
,fuller
,format
。
-
-
撤销操作
-
新增文件后使用命令
git add
已提交到暂存区,但项目的实际需求是该部分文件不需要纳入版本控制。git-demo1:$ git add ./idea git-demo1:$ git reset HEAD ./idea #该部分文件去除版本控制 # 在版本库根目录下新建文件.gitignore控制哪部分文件不需要版本控制 https://www.gitignore.io/ # 语法如下: # .idea/
已纳入版本库管理,修改后未暂存,丢弃修改。
git-demo1:$ git checkout -- README.md #从版本库中检出 特别注意需要 使用--加文件
-
已纳入版本库管理,修改后已暂存,想丢弃这部分修改。实际操作先从暂存
区删除,在从版本库检出。git-demo1:$ git reset HEAD README.md #先从暂存区中撤回 git-demo1:$ git checkout -- README.md #从版本库中检出覆盖工作区的文 件。特别注意需要使用--加文件
-
提交后发现漏掉了几个文件没有提交,带
--amend
参数再提交一次会被认为为同一次提交。git-demo1:$ git commit --amend
-
版本回退功能。使用命令
git reset HEAD [版本Hash]
。内部使用HEAD
指针指示当前指向的版本,所以可以使用以下方式回退版本:# 回退到当前指向的版本 git-demo1:$ git reset --hard HEAD # 回退到上一版本,HEAD^ ,2个^^代表回退到上两个版本.~n代表回退n个版本 git-demo1:$ git reset --hard HEAD^ # 回退到指定hash值的版本,hash值可以取前6位 git-demo1:$ git reset --hard 96ae43 # 如果又想回退到最新的版本 因为使用git log看不到最新版本的hash 所以首先要使用git reflog找到历史提交的最新版本的hash git-demo1:$ git reflog git-demo1:$ git reset --hard 16a4585
-