Git使用详解全图文(基于gitee),看这一篇就够了

git使用详解全图文(基于gitee),看这一篇就够了

简介

Git又名分布式版本控制系统:分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

Git易于学习, 占用空间小,性能快如闪电。它优于 SCM 工具,如 Subversion、CVS、Perforce 和 ClearCase,具有廉价的本地分支、方便的暂存区域和 多个工作流等功能。

Git使用详解全图文(基于gitee),看这一篇就够了_第1张图片

Git的功能特性:

从一般开发者的角度来看,git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
1、查看邮件或者通过其它方式查看一般开发者的提交状态。
2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向公共服务器提交结果,然后通知所有开发人员。

优点:

适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间可以很容易的解决冲突。
离线工作。

缺点:

资料少(起码中文资料很少)。
学习周期相对而言比较长。
不符合常规思维。
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

常见的版本控制工具

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Stuodio Online

目前影响力最大且使用最广泛的是Git和SVN

Git与SVN的主要区别

这是 Git 和 SVN 最大的区别。若能掌握这个概念,两者区别基本搞懂大半。因为 Git 是分布式的,所以 Git 支持离线工作,在本地可以进行很多操作,包括接下来将要重磅推出的分支功能。而 SVN 必须联网才能正常工作。

Git复杂概念多,SVN简单易上手

所有同时掌握 Git 和 SVN 的开发者都必须承认,Git 的命令实在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟练掌握,还必须掌握rebasemerge的区别,fetchpull的区别等,除此之外,还有cherry-picksubmodulestash等功能,仅是这些名词听着都很绕。

在易用性这方面,SVN 会好得多,简单易上手,对新手很友好。但是从另外一方面看,Git 命令多意味着功能多,若我们能掌握大部分 Git 的功能,体会到其中的奥妙,会发现再也回不去 SVN 的时代了。

Git分支廉价,SVN分支昂贵

在版本管理里,分支是很常使用的功能。在发布版本前,需要发布分支,进行大需求开发,需要 feature 分支,大团队还会有开发分支,稳定分支等。在大团队开发过程中,常常存在创建分支,切换分支的需求。

Git 分支是指针指向某次提交,而 SVN 分支是拷贝的目录。这个特性使 Git 的分支切换非常迅速,且创建成本非常低。

而且 Git 有本地分支,SVN 无本地分支。在实际开发过程中,经常会遇到有些代码没写完,但是需紧急处理其他问题,若我们使用 Git,便可以创建本地分支存储没写完的代码,待问题处理完后,再回到本地分支继续完成代码。

Git使用详解全图文(基于gitee),看这一篇就够了_第2张图片

下载Git软件

去Git官网https://git-scm.com/下载对应的操作系统版本(这里我使用的windows)下载的挺慢可以等会,下载完后什么都不管,狂点下一步就行

Git使用详解全图文(基于gitee),看这一篇就够了_第3张图片

启动Git

安装完后会在开始菜单中看见git选项
Git使用详解全图文(基于gitee),看这一篇就够了_第4张图片
右键也可以看见(右键出不来的等一会,或者重启电脑,我的就开始是显示不出来,卸载后重装也没用,就先没管,过了一段时间就自己出来了,这跟我们安装Git时狂点下一步有关,但默认是会显示的,没有显示的朋友可以试着看看这个:
Git使用详解全图文(基于gitee),看这一篇就够了_第5张图片
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多

Git CMD:Windows风格的命令行

Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

Git使用的很多都是Linux命令行(最后有git常用命令行)

Git配置(本地)

  1. 首先右键点击Git Bash Here后输入git config -l查看配置
    Git使用详解全图文(基于gitee),看这一篇就够了_第6张图片
  2. 设置用户名与邮箱(用户标识,必要)
git config --global user.name "?????"  #名称
git config --global user.email [email protected]   #邮箱
  1. 输入git config --global --list查看自己添加的用户名和邮箱
    在这里插入图片描述

注册Gitee(码云)并配置公钥

  1. 进入本地c盘用户目录下选择自己windows登录的用户文件夹比如我的叫18358
    Git使用详解全图文(基于gitee),看这一篇就够了_第7张图片
  2. 里面有个.ssh目录点进去(没有.ssh的话,右键打开git bash here输入mkdir .ssh
    Git使用详解全图文(基于gitee),看这一篇就够了_第8张图片Git使用详解全图文(基于gitee),看这一篇就够了_第9张图片
  3. 右键git bash here 输入ssh-keygen生成公钥(红色杠掉的那一行)
    Git使用详解全图文(基于gitee),看这一篇就够了_第10张图片
  4. 注册完gitee后在设置里面点击SSH公钥把公钥复制到里面点确定(这样每次上传就不需要输入gitee的账号密码)
    Git使用详解全图文(基于gitee),看这一篇就够了_第11张图片
  5. 创建自己的仓库(开始只能私有 创建完成后在管理里面可以开源)
    在这里插入图片描述
    创建仓库
    Git使用详解全图文(基于gitee),看这一篇就够了_第12张图片
    开源(打开仓库后点击管理、然后开源)
    Git使用详解全图文(基于gitee),看这一篇就够了_第13张图片

上传时忽略哪些文件(.gitignore)

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

在主目录下建立".gitignore"文件,此文件有如下规则:

忽略文件中的空行或以井号(#)开始的行将会被忽略。

可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。

如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。

如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

#为注释
*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt     #但lib.txt除外
/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/       #忽略build/目录下的所有文件
doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

.gitignore文件是创建仓库时添加了.gitigonre自带的

Git使用详解全图文(基于gitee),看这一篇就够了_第14张图片

Java常用的.gitigonre配置

# Compiled class file
*.class

# Eclipse
.project
.classpath
.settings/

# Intellij
*.ipr
*.iml
*.iws
.idea/

# Maven
target/

# Gradle
build
.gradle

# Log file
*.log
log/

# out
**/out/

# Mac
.DS_Store

# others
*.jar
*.war
*.zip
*.tar
*.tar.gz
*.pid
*.orig
temp/

操作(我拿我自己的项目举例,你们可以拿自己新创建的仓库操作)

1.克隆(在克隆那里点击复制)

Git使用详解全图文(基于gitee),看这一篇就够了_第15张图片

2.新建一个文件夹打开 git bash here 输入git clone 仓库地址 (shift + insert 可以粘贴复制的内容)

Git使用详解全图文(基于gitee),看这一篇就够了_第16张图片
回车后
Git使用详解全图文(基于gitee),看这一篇就够了_第17张图片

3.上传到gitee(重要)

用idea打开项目(修改后)上传到gitee(这里使用命令行),打开文件目录右键(这里看见蓝色字体就是要上传的分支(分支后文会介绍))

Git使用详解全图文(基于gitee),看这一篇就够了_第18张图片

1.输入git add .加载到暂存区(有空格)

2.输入git commit -m '要更新的内容'( ‘’ 里面填你更新或者新创建的文件上传到gitee时显示的内容)

Git使用详解全图文(基于gitee),看这一篇就够了_第19张图片

3.输入git push提交到gitee(我这里啥也没更新,所以报错了,不然git add .之后会显示你更新或新创建的代码、目录)

Git使用详解全图文(基于gitee),看这一篇就够了_第20张图片

分支

顾名思义,分支就是从主线上分离出来进行另外的操作,而又不影响主线,主线又可以继续干它的事,是不是有点像线程,最后分支做完事后合并到主线上而分支的任务完成可以删掉了。这样是不是很方便,主线继续做它的事,分支用来解决临时需求,二者互不相干。

git的分支功能特别的强大,它不需要将所有数据进行复制,只要重新创建一个分支的指针指向你需要从哪里开始创建分支的提交对象(commit),然后进行修改再提交,那么新分支的指针就会指向你最新提交的这个commit对象,而原来分支的指针则指向你原来开发的位置,当你在哪个分支开发,HEAD就指向那个分支的最新提交对象commt。没弄清楚没关系,先有这么一个概念,后面慢慢就会弄清的。

Git使用详解全图文(基于gitee),看这一篇就够了_第21张图片

克隆

如果要克隆分支的内容的话需要输入git clone -b 分支名 仓库地址

比如我要克隆student-information分支里的内容
Git使用详解全图文(基于gitee),看这一篇就够了_第22张图片
在本地文件夹内打开git bash here输入git clone -b 分支名 仓库地址
Git使用详解全图文(基于gitee),看这一篇就够了_第23张图片

查看分支(这里不是爆红,是本来就是红的)

# 列出所有本地分支
git branch
clea
# 列出所有远程分支
git branch -r

Git使用详解全图文(基于gitee),看这一篇就够了_第24张图片

切换分支

使用git checkout 分支名
Git使用详解全图文(基于gitee),看这一篇就够了_第25张图片
这样我切换到master分支就可以使用上传操作上传到master分支了

git 常用命令

#上传(重要)
#添加所有文件到暂存区
git add .
#提交暂存区中的内容到本地仓库 -m 提交信息
git commit -m '更新信息'
#上传到gitee
git push

#清屏(命令行太多了,看着碍眼)
clear

#查看命令历史(清屏后可以看见之前敲过的命令)
history

#分支(重要)
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
#切换到已有分支
git checkout 分支名
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

你可能感兴趣的:(Git,java,git,github,分布式)