Java教程

Git使用

本文主要是介绍Git使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Git使用

聊git之前,需要了解一个概念,版本控制!

版本控制

什么是版本控制?就是版本迭代,新的版本!

版本控制(Revision Control)可以在开发的过程中管理我们对文件,目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

  • 可以实现多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 统计开发工作量
  • 并行开发,提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

简单来说,版本控制就是管理多人协同开发项目的技术。

多人开发就必须要使用版本控制,否则代价会比较大!(比如临近上线,发现团队内开发的代码,每个人都不太一样,导致上线后代码有缺失!)

SVN和Git的区别

  • 集中版本控制 - (代表产品:SVN)(类似 中央集权制 )

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新版本。

由于所有的版本数据都存在服务器上,如果用户不联网,就看不到历史版本,也无法切换分支工作。并且,所有数据都保存在单一的服务器上,一旦服务器损坏,就会丢失所有的数据。解决方法:服务器定期备份。

  • 分布式版本控制 - (代表产品:Git)

所有版本信息都会全部同步到本地的每个用户,用户不联网也可以在本地查看所有历史版本,可以离线在本地提交代码,只需在联网时push到对应的服务器或push到其他用户的分支账号。由于每个用户都保存所有的版本数据,只要一个用户的设备没有问题,就可以恢复所有的数据。

好处:每个人都拥有全部的代码!不会因为服务器损坏,或者网络问题,造成不能工作的情况!

坏处:Git无法设置权限,每个人都拥有全部的代码!一旦某个人跑路了,有可能会带走所有的代码。。而SVN可以设置权限,用户不一定拥有全部的代码,因此仍然有很多公司采用SVN来管理代码。

Git的历史

SVN和Git的区别

  • SVN是集中式版本控制系统,版本库集中存放在中央服务器,工作的时候需要先从中央服务器得到最新的版本,然后工作,完成工作后,需要把做完的内容推送到中央服务器。集中式版本控制系统必须联网才能工作,对网络带宽要求较高。
  • Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网。工作完之后直接推送给其他人,合并代码即可。Git可以直接看到更新和新增了哪些代码和文件。对网络没有要求,可以离线工作。

Linux社区中存在很多的大佬!Linux的内核开源项目的多人维护和开发工作很多时间都浪费在了提交补丁和保存归档的繁琐事务上(1991-2002年间),Linux之父忍不住了,花了2周时间,开发了Git。

Git是免费的,开源的,最初是为了辅助Linux内核维护开发的,取代其他的收费的版本控制软件。

Git环境配置

软件下载及安装

Git官网:https://git-scm.com/ ,下载git对应操作系统的版本,直接无脑下一步安装。(无需手动去配环境变量,安装包会默认自动配置)

如果官网下载速度慢,可以在镜像地址下载:http://npm.taobao.org/mirrors/git-for-windows/

启动Git

  • Git Bash:类似Linux风格的命令行,使用最多,推荐最多。

    • 常见的Linux命令:cd进入,pwd显示所在路径,ls展示文件,ll展示文件更详细,touch新建文件,rm删除文件,mkdir新建文件夹,rm -r删除一个文件夹(rm -rf / 表示递归清除所有文件,其中f表示递归清除,/表示所有),mv移动,reset重启终端,clear清屏。。。
  • Git CMD:Windows风格的命令行

  • Git GUI:图形界面的Git

Git配置

查看配置git config -l

  • 设置用户名与邮箱(这是用户标识,必须设置)

    git config --global user.name "kuangshen"  #名称
    git config --global user.email 24736743@qq.com   #邮箱
    

Git基本理论(核心)

Git工作区域

Git本地有三个工作区域:Working Directory(工作目录)、Stage / Index(暂存区)、Repository / Git Directory(资源库)。

如果再加上远程的git仓库(Remote Directory),就可以分为四个工作区域。

  • Workspace:工作区,就是我们平时存放项目代码的地方
  • Stage / Index:暂存区,用于临时存放改动,事实上只是一个文件,保存即将提交到文件列表信息。
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有提交的所有版本的数据。其中HEAD指向最新放入仓库的版本。
  • Remote:远程仓库,托管代码的服务器(GitHub或Gitee等),可以简单的认为是你项目组中的一台电脑用于远程数据交换。

Git工作流程

Git的工作流程一般是这样的:

  • 1、在工作目录中添加、修改文件;
  • 2、通过git add .将需要进行版本管理的文件放入暂存区域
  • 3、通过git commit将暂存区域的文件提交到git仓库 (git commit -m ‘’提交备注信息“)
  • 4、通过git push将本地仓库文件推送到远程仓库。

因此,git管理的文件有3种状态:已修改(modified)、已暂存(staged)、已提交(committed)

Git项目搭建

本地仓库搭建

  • 在想要新建仓库的位置鼠标右键Git Bash Here

  • 在当前目录通过git init新建一个Git本地仓库

  • 执行后可以看到一个 .git 格式的隐藏文件目录,关于版本等的所有信息都在这个目录里面。

克隆远程仓库

  • 在想要克隆仓库的位置鼠标右键Git Bash Here
  • 通过git clone [url地址]克隆远程目录,将远程服务器上的仓库完全镜像一份至本地!
# 克隆一个项目和它的整个代码历史(版本信息)
git clone [url]  # https://gitee.com/kuangstudy/openclass.git
  • 或者在IDEA新建项目时通过git克隆代码。

Git文件操作

忽略文件

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

在主目录下建立 “.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"文件,包括锁文件,日志文件,生成的jar包war包,idea的配置等都忽略

*.class
*.log
*.lock

# 生成的jar包war包
*.jar
*.war
*.ear
target/

# idea配置文件
.idea/
*.iml
*.ipr
*.iws


*velocity.log*

使用码云

github是有墙,比较慢,在国内一般使用gitee,公司使用自己搭建的gitlab服务器。

  • 设置本地绑定SSH公钥,可以实现免密码登陆!
# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen

  • 将公钥信息添加到码云账户中即可。

IDEA中集成Git

方法一:新建普通项目,将以往的git项目的【git文件】复制到这个项目中。(则这个新建的普通项目就变成了git远程项目,可以提交到远程仓库)

方法二:在gitee或者gitlab中新建git仓库,在IDEA中克隆下来。IDEA --> New Project --> Get from Version Control --> Git

IDEA技巧

在IDEA中不显示指定的文件,比如iml文件,md文件等。

常见合并问题

问题:Git Pull Failed(在开发的过程有未提交的代码,同时又pull代码,IDEA会报错Pull失败,原因是在本地的代码会冲突,IDEA无法自动处理)

解决方法:首先将本地未提交的代码commit(只需commit到本地仓库,无需push到远程仓库),然后再pull远程仓库的代码,在IDEA中选择Merge合并,手动处理冲突。

备注:

  • 养成良好习惯,定期先pull再push,每天来上班第一件事,下班第一件事,都是先pull一下代码,如果有冲突,尽早处理。

  • 统一编码格式,统一采用UTF-8编码格式

  • 格式化代码,美化代码(快捷键Ctrl + Alt + L)【慎用,在公司最好不要用,因为git会记录这段代码最后由你修改,这样将来追责就是你】

  • 一定要先提交.gitignore文件,不要提交IDEA的配置文件

这篇关于Git使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!