Git应用

简介

  1. Git 是一个免费和开源的分布式版本控制系统,旨在以速度和效率处理从小型到大型项目的所有内容。可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper

  2. Git易于学习, 占用空间小,性能快如闪电。它优于 SCM 工具,如 Subversion、CVS、Perforce 和 ClearCase,具有、方便和等功能。

  3. 分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需要联网了,因为版本库就在你自己的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的 修改了。

核心

上图所展示的便是Git的核心,只有充分理解上图,才能很哈的使用Git这一工具。

主要分为四部分:

  • 远程仓库(GitHub, Gitee等托管平台)。
  • 本地仓库:在自己的项目根目录,通过在Git bash中使用git init命令创建仓库。
  • 暂存区:当我们的代码完成了一个阶段,我们想当前的这个版本在本地仓库进行保存一个版本,也就是commit操作,但是假如我们每次文件修改后都需要进行一次commit,会比较麻烦,所以Git给我们提供了一种方式,就是将修改的文件进行一次add操作,添加到暂存区中,在进行了一些add之后,统一进行commit操作。当然也可以直接每次add之后就进行commit。
  • 工作区:我们在资源管理器里可以看到的文件就是我们的工作区

上图中所展示的命令如下(下文也会说到):

  1. clone(克隆): 从远程仓库中克隆代码到本地仓库
  2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
  3. add(添加): 在提交前先将代码提交到暂存区
  4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge
  7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

基础配置

1 配置用户信息

在Git bash中输入以下命令即可

1
git config --global user.name "用户名"
1
git config --global user.email "邮箱地址"

2 查看用户信息

在Git bash中输入以下命令即可

1
git config --global user.name
1
git config --global user.email

也可以通过下面的命令直接查出

1
git config --global  --list

3 为命令起别名

  1. 在用户目录创建.bashrc文件。

  2. 在此文件中添加别名

    1
    2
    3
    alias 别名='原始命令'				#基本格式
    #举例
    alias gitlog='git log --pretty=oneline --all --graph --abbrev-commit'
  3. 打开Git bash,执行以下命令

    1
    source ~/.bashrc

4 处理中文乱码

  1. 在Git bash中输入以下命令

    1
    git config --global core.quotepath false
  2. 打开Git安装命令,找到etc/bash.bashrc 文件末尾添加以下信息

    1
    2
    export LANG="zh_CN.UTF-8"
    export LC_ALL="zh_CN.UTF-8"

基础命令

1 将文件添加至暂存区

1
2
git add 文件名			#将指定文件上传至暂存区
git add . #将工作区的所有文件上传至暂存区

2 将文件提交到本地仓库

1
2
git commit -m "XXXX"   
#将暂存区的所有文件提交到本地仓库其中 XXX 表示提交时,对此次操作的标记

3 查看文件状态

1
git status             #查看文件现在所处的状态

4 查看日志

1
git log -参数

参数:

  • –all 显示所有分支
  • –pretty=oneline 将提交信息显示为一行
  • –abbrev-commit 使得输出的commitId更简短
  • –graph 以图的形式显示
1
git log				#所展示的内容很少,基本很少使用

一般采用命令

1
git-log='git log --pretty=oneline --all --graph --abbrev-commit

但使用时较为复杂,我们可以为命令起别名。在基础配置中可以看到。

5 版本回退

1
git reset --hard commit_id			#commit_id通过查日志得等

如果提交记录被删除,不能获得commit_id。可以通过git reflog查询。

忽略文件

1 简介

在我们的项目中,有许许多多的文件。但不是所有的文件(比如:java项目下的字节码文件,日志文件等等)我们都不需要上传至代码托管平台。对于这种文件,我们可以在工作目录中创建一个名为 .gitignore 的文件。列出要忽略的文件模式。

2 语法

下面是几种常见的忽略格式:

1
2
3
4
5
6
7
*.文件后缀名		   #如: *.txt		  忽略所有以.txt为后缀的文件
/目录名 #如: /temp 忽略根目录下的temp目录
目录名/ #如: temp/ 忽略temp目录下的所有文件
目录名/*.文件后缀名 #如: temp/*.txt 忽略temp目录下的所有以txt后缀结尾的文件
# 注意:
!文件名.文件后缀表 #常嵌套上的的格式使用。表示此文件除外。 如: *.txt !test.txt
#忽略所有以txt后缀结尾的文件,但test.txt除外

分支命令

1 查看分支

1
git branch

2 创建分支

1
git branch 分支名

3 切换分支

1
git checkout 分支名

4 创建并切换分支

1
git checkout -b 分支名

4 合并分支

1
git merge 分支名

5 删除分支

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

1
2
git branch -d 分支名	#删除分支时,需要检查
git branch -D 分支名 #删除分支时,不做检查,强制删除。

6 解决冲突

当多个分支同时对同一个文件的同一个位置修改时,在合并分支时便会产生冲突。

解决方法:

  1. 处理冲突产生的文件(分支的开发者讨论使用一个分支的内容)
  2. 重新上传。

远程仓库

1 添加远程仓库

1
git remote add 远端名称 仓库路径
  • 远端名称:默认是origin,可以自定义
  • 仓库路径:从码云仓库主页获取

2 查看远程仓库

1
git remote

3 推送到远程仓库

1
git push [-f] [--set-upstream] [[远端名称 [本地分支名][远端分支名]]
  • 如果远端分支名和本地分支名一样,则可以省略远端分支名
  • -f :强制覆盖
  • –set-upstream : 推送到远端的同时并且建立起和远端分支的关联关系。
  • 如果当前分支已经和远端分支关联,则可以省略分支名和远端名。

4 查看本地远程关系

1
git branch -vv

5 从远程仓库克隆

1
git clone 仓库路径 [本地目录]	#本地目录可以省略,会自动生成本地目录

6 从远程仓库中抓取和拉取

1 抓取

抓取指令就是将仓库里的更新都抓取到本地,不会进行合并

1
git fetch [remote name] [branch name]
  • 如果不指定远端名称和分支名,则抓取所有分支。

2 拉取

拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge

1
git pull [remote name] [branch name]
  • 如果不指定远端名称和分支名,则抓取所有并更新当前分支。

7 解决合并冲突

概述:在某一段时间内,有甲、乙两个人相继修改了同一个文件中的代码。此时就会出现合并冲突

解决方法:甲先推送到远程仓库后,乙拉取到本地修改后再推送到远程仓库。


如果有什么,可以通过下面的邮箱和我联系!!!

img