GIT教程三:GIt的下载安装及使用

Table of Contents

一:下载;

二:安装;

三:git的工作结构;

四:GIT命令行操作;

1:本地库初始化;

命令:git init

效果:

注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。

2:设置签名;

形式:用户名和邮箱

作用:区分不同开发人员的身份;辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系;

命令:项目级别/仓库级别:仅在本地库有效;

命令系统用户级别:登录当前操作系统的用户范围

级别优先级

3:基本操作;

1:状态查看;

2:添加;

3:提交

4:暂存区文件撤回

5:修改后的文件可以直接添加(add)或提交(commit);

6:查看历史记录;

7:当前版本的前进和后退

8:reset三个参数对比;

9:删除文件;

10:删除文件找回;

11:比较文件差异;

五:分支操作;

1:分支的概念;

2:分支的好处;

3:分支操作;

创建分支:

查看分支;

切换分支;

合并分支;

解决合并冲突;

项目使用中分支问题:

1:有代码了,需要向git上转移

  2:本地创建新的分支,想要push到远程

六:GIT的管理机制概念;

1:哈希;

2:git保存版本机制;

2.1:集中式版本控制工具的文件管理机制

2.2 Git  的文件管理机制

2.3:提交对象及其父对象形成的链条(git用各历史版本行成链条进行管理)​

3:分支管理概念;(利用指针指向不同地址来进行管理)

七:本地git和远程gitHub链接操作;

1:创建本地库;

1.1:创建文件;

1.2:git init

1.3:设置签名(上边都有,就不说了)

2:创建远程库(两个不一定必须同名,同名是为了方便)

3: 在本地git库中创建远程库别名(可选,主要是嫌远程名字太长)

4:本地库推送到远程库(push)

git push [别名] [分支名]

5:克隆(直接clone地址,该地址可以是别人的)

7:拉取(从远程库拉取文件到本地库);

8:解决冲突;(提交时必须先拉下来,解决了冲突后,然后再提交)

9:跨团队合作(fork)

10:SSH登录(目的是为了不输入用户名密码就可以将本地库的文件push到远程库);

八:在开发工具中运用git(图形化工具)-Eclipse

1;工程初始化为本地仓库;

2:Eclipse忽略文件;

概念:Eclipse 特定文件

为什么要忽略 Eclipse 特定文件呢?

GitHub 官网样例文件

3:提交到本地库;

4:将本地的库推动到远程;

5:将远程库的内容克隆岛本地工程;

6:Eclipse解决冲突;

九:在开发工具中运用git(图形化工具)-IDEA

1:创建本地程序;

2:配置GIT

3:配置GitHub

4:IDEA在本地GIT中创建仓库;

5:添加到仓库​

6:提交到远程仓库(push) 

7:远程仓库克隆到本地;

8:合并冲突;

十: Git 工作流

1:概念 

2:分类

2.1  集中式工作流

2.2 GitFlow  工作流

2.3 Forking  工作流

3:GitFlow 工作流详解 工作流详解

3.1 分支种类 分支种类

3.2:工作流举例说明;

3.3:在工作中具体使用git工作流;


一:下载;

二:安装;

 双击安装,基本操作都是下一步,重点的会进行说明;

保持默认就好;

推荐使用vim编译器,也还是默认就好;主要是使用vim编译器可以和我们linux保持一致;

这个说明一下,这个选择第一个就好。不更换电脑环境变量;

这一步也说明一下,现在选择以后本地库和远程库的链接方式;建议选择第一个,第二个用windows自带的通道太局限;

这一虽然字多,但是没啥用;也解释一下。就是用windows和linux的环境不同,所以改变一下换行符;

使用终端的方式;

安装就完事了;

三:git的工作结构;

四:GIT命令行操作;

1:本地库初始化1;

命令:git init

效果:初始化仓库,然后

git remote add origin https://github.com/canggao/test.git,就和远程仓库有了关联,就可以提交修改push了。

注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡
乱修改。

1:本地库初始化2;

git clone https://github.com/canggao/test.git也可以初始化仓库,自动产生关联

2:设置签名;

形式:用户名和邮箱

作用:区分不同开发人员的身份;
辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系;

命令:项目级别/仓库级别:仅在本地库有效;

git config user.name tom_pro
git config user.email goodMorning_pro@atguigu.com

信息保存位置:./.git/config 文件

命令系统用户级别:登录当前操作系统的用户范围

git config --global user.name tom_glb
git config --global goodMorning_pro@atguigu.com

信息保存位置:~/.gitconfig 文件(当前用户的根目录下的.gitconfig文件下)

级别优先级

就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别
的签名
如果只有系统用户级别的签名,就以系统用户级别的签名为准
二者都没有不允许

3:基本操作;

1:状态查看;

git status

查看工作区,暂存区状态;

2:添加;

git add [file name]
将工作区的“新建/修改”添加到暂存区

3:提交

git commit -m "commit message" [file name]
将暂存区的内容提交到本地库

4:暂存区文件撤回

git rm --cached [file name]

5:修改后的文件可以直接添加(add)或提交(commit);

 

6:查看历史记录;

git log(完整日志)

 多屏显示:

           空格向下翻页

           b向上翻页

           q退出

git log --pretty=oneline(每条记录只显示一行)

git log --oneline

git reflog(显示到某一个版本需要几步)

7:当前版本的前进和后退

基于索引值操作【推荐】

git reset --hard 【局部索引值】

如:git reset --hard 5c16f08

使用^符号:只能后退
     git reset --hard HEAD^
     注:一个^表示后退一步,n 个表示后退 n 步
使用~符号:只能后退
    git reset --hard HEAD~n
    注:表示后退 n 步

8:reset三个参数对比;

--soft 参数

仅仅在本地库移动 HEAD 指针(所以暂存区内有未提交的文件)

--mixed参数

在本地库移动 HEAD 指针
重置暂存区(所以工作区内有未添加的文件)

--hard参数

在本地库移动 HEAD 指针
重置暂存区
重置工作区

9:删除文件;

先工作区内删除;

rm aaa.txt

再将这种提交状态放进缓存区;

git add aaa.txt

再将这种删除的状态放进本地库

git commit -m "说明" aaa.txt

10:删除文件找回;

前提:删除前,文件存在时的状态提交到了本地库。
  操作:git reset --hard [指针位置]
  删除操作已经提交到本地库:指针位置指向历史记录
  删除操作尚未提交到本地库:指针位置使用 HEAD(HEAD代表当前记录,因为还没commit,所以记录中没有新的删除记录)

11:比较文件差异;

git diff [文件名]
  将工作区中的文件和暂存区进行比较
git diff [本地库中历史版本] [文件名]
  将工作区中的文件和本地库历史记录比较
  不带文件名比较多个文件

五:分支操作;

1:分支的概念;

在版本控制过程中,使用多条线同时推进多个任务

2:分支的好处;

同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任
何影响。失败的分支删除重新开始即可。

3:分支操作;

创建分支:

git branch [分支名]

查看分支;

git branch -v

切换分支;

git checkout [分支名]

注:本地上切换分支后改文件下只会显示该分支的内容,但是没有add的文件都会存在!

合并分支;

第一步:切换到接受修改的分支(被合并,将要增加新内容的分支)上

git checkout [被合并分支名]

第二步:执行 merge 命令

git merge [有新内容分支名]

解决合并冲突;

当合并后冲突显示:

进入文件冲突展示:

冲突的解决:
  第一步:编辑文件,删除特殊符号
  第二步:把文件修改到满意的程度,保存退出

查看文件状态:


  第三步:git add [文件名]
  第四步:git commit -m "日志信息"
        注意:此时 commit 一定不能带具体文件名

 

项目使用中分支问题:

1:有代码了,需要向git上转移

      先在gitlab上创建仓库,

      在本地文件夹上git clone xxx

       添加文件,然后add,commit ,push

  2:本地创建新的分支,想要push到远程

      本地创建develop分支

       远程创建develop分支

       本地切换分支,先git pull origin develop

       将develop分支文件进行增删改,然后add,commit

        最后 git push origin develop

忽略push时候的代码

在文件目录下新建一个.gitignore的文件,该文件用于声明忽略规则,规则对当前目录及其子目录生效

注:该文件没有文件名,所以可以用git bash来touch创建

1:/mtk/ 过滤整个文件夹

2:*.zip 过滤所有的。zip的文件

3:/mtk/do.c 过滤指定文件

4:!index.html 不过滤某个文件

 

 

六:GIT的管理机制概念;

1:哈希;

哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下
几个共同点:
①不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
②哈希算法确定,输入数据确定,输出数据能够保证不变
③哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
④哈希算法不可逆
Git 底层采用的是 SHA-1 算法。
哈希算法可以被用来验证文件。原理如下图所示:

2:git保存版本机制;

2.1:集中式版本控制工具的文件管理机制

以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本
文件和每个文件随时间逐步累积的差异。

2.2 Git  的文件管理机制

Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前
的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,
Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的
工作方式可以称之为快照流。

2.3:提交对象及其父对象形成的链条(git用各历史版本行成链条进行管理)

3:分支管理概念;(利用指针指向不同地址来进行管理)

切换分支;

七:本地git和远程gitHub链接操作;

1:创建本地库;

1.1:创建文件;

1.2:git init

1.3:设置签名(上边都有,就不说了)

2:创建远程库(两个不一定必须同名,同名是为了方便)

我的另一篇博客中也有,就不说了;

 

3: 在本地git库中创建远程库别名(可选,主要是嫌远程名字太长)

git remote -v 查看当前所有远程地址别名
git remote add [别名] [远程地址]

4:本地库推送到远程库(push)

git push [别名] [分支名]

5:克隆(直接clone地址,该地址可以是别人的)

git clone 远程地址

效果
  完整的把远程库下载到本地
  创建 origin 远程地址别名
  初始化本地库

6:团队成员要求,受邀请的人可以直接向该远程库推送代码;

“岳不群”其他方式把邀请链接发送给“令狐冲”,“令狐冲”登录自己的 GitHub
账号,访问邀请链接。

7:拉取(从远程库拉取文件到本地库);

pull=fetch+merge
  git fetch [远程库地址别名] [远程分支名]
  git merge [远程库地址别名/远程分支名]

或者直接使用pull
  git pull [远程库地址别名] [远程分支名]

8:解决冲突;(提交时必须先拉下来,解决了冲突后,然后再提交)

  要点
     如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉
          取。
     拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
类比
 债权人:老王
 债务人:小刘
 老王说:10 天后归还。小刘接受,双方达成一致。
 老王媳妇说:5 天后归还。小刘不能接受。老王媳妇需要找老王确认后再
执行。

9:跨团队合作(fork)

fork

本地修改,然后推送到远程

Pull request

然后被fork的人打开自己的项目,然后打开;

审核代码:

合并代码:

最后将远程库拉取到本地;

10:SSH登录(目的是为了不输入用户名密码就可以将本地库的文件push到远程库);

1:进入当前用户的家目录
$ cd ~
2: 删除.ssh 目录
$ rm -rvf .ssh
3: 运行命令生成.ssh 密钥目录
$ ssh-keygen -t rsa -C atguigu2018ybuq@aliyun.com
[ 注意:这里-C  这个参数是大写的 C]
4: 进入.ssh 目录查看文件列表
$ cd .ssh
$ ls -lF
5:查看 id_rsa.pub 文件内容

$ cat id_rsa.pub
6:复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→Settings→SSH and GPG keys-> New SSH Key
7:输入复制的密钥信息
8:回到 Git bash 创建远程地址别名
git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git
9: 推送文件进行测试

八:在开发工具中运用git(图形化工具)-Eclipse

1;工程初始化为本地仓库;

工程→右键→Team→Share Project→Git

2:Eclipse忽略文件;

概念:Eclipse 特定文件

这些都是 Eclipse 为了管理我们创建的工程而维护的文件,和开发的代码没有
直接关系。最好不要在 Git 中进行追踪,也就是把它们忽略。
.classpath 文件
.project 文件
.settings 目录下所有文件

为什么要忽略 Eclipse 特定文件呢?

同一个团队中很难保证大家使用相同的 IDE 工具,而 IDE 工具不同时,相关工
程特定文件就有可能不同。如果这些文件加入版本控制,那么开发时很可能需要为
了这些文件解决冲突。

GitHub 官网样例文件

https://github.com/github/gitignore
https://github.com/github/gitignore/blob/master/Java.gitignore

本地忽略特殊文件的操作;

编辑本地忽略配置文件,文件名任意

创建文件Java.gitignore   ----(放在家目录下 C:/Users/Lenovo/Java.gitignore)

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

.classpath
.project
.settings
target

然后在~/.gitconfig 文件中引入上述文件
[core]
excludesfile = C:/Users/Lenovo/Java.gitignore

[ 注意:这里路径中一定要使用“ “/” ” ,不能使用“ “\ ”]

git插件读取到了本文件

3:提交到本地库;

4:将本地的库推动到远程;

首先远程库上有这个库;

点击finish

到此成功;

5:将远程库的内容克隆岛本地工程;

Import----导入工程

到远程库复制地址;

指定工程的保存位置

指定工程导入方式,这里只能用:Import as general project

转换工程类型

6:Eclipse解决冲突;

根本提交不上去,然后pull一下文件,

冲突文件→右键→Team→Merge Tool
修改完成后正常执行 add/commit 操作即可

九:在开发工具中运用git(图形化工具)-IDEA

在idea中和Eclipse中基本一样

1:创建本地程序;

2:配置GIT

3:配置GitHub(如用gitlab就忽略)

4:IDEA在本地GIT中创建仓库;(本地代码向远程推)

 文件变红带边创建仓库成功;

5:添加到仓库

注意:一般只推代码有关的和

6:提交到远程仓库(push) 

添加或者修改远程仓库地址;

 

7:远程仓库克隆到本地;

 

 

8:合并冲突;

 

9:idea分支管理:

9.1 创建本地分支的话,新创建的分支代码会和当前所在分支一样。

9.2:从远程库拉取分支

1:先从远程库创建分支,选定copy的代码

2:拉取远程分支

3:将远程分支对应到本地

4:修改本地代码,然后push到远端

5:从idea删除远端分支(该分支开发完成后,确定不用了)

 

十: Git 工作流

1:概念 

在项目开发过程中使用 Git 的方式

2:分类

2.1  集中式工作流

像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有
修改都提交到 Master 这个分支上。
这种方式与 SVN 的主要区别就是开发人员有本地库。Git 很多特性并没有用到。

2.2 GitFlow  工作流

Gitflow 工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布
迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

2.3 Forking  工作流

Forking 工作流是在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的
功能以达到代码审核的目的。更适合安全可靠地管理大团队的开发者,而且能接受
不信任贡献者的提交。

3:GitFlow 工作流详解 工作流详解

3.1 分支种类 分支种类

 主干分支 master
主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境
完全一致。
 开发分支 develop
主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
 bug 修理分支 hotfix
主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修
理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
 准生产分支(预发布分支) release
较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集
成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后
可以视情况删除。
 功能分支 feature
为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支
中独立出来。 开发完成后会合并到开发分支。

3.2:工作流举例说明;

3.3:在工作中具体使用git工作流;

以eclipse为例;

1:项目成员创建开发分支;

2: 项目成员在新的分支上开发并提交;

3:项目经理拉取代码,并切换分支审核代码;

4: 测试功能没问题后,合并代码;

5:切回master

6:合并分支;

7:合并结果;(有冲突解决冲突)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍煜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值