• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

Git使用

在说git之前,你需要知道一个概念,版本控制!

版本控制

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

版本控制可以管理开发过程中文件、目录或项目的修改历史,方便查看修改历史和备份还原软件工程技术的上一版本。

可以实现多人协同开发。

并跟踪和记录一个或多个文件的历史。

统计发展工作量

并行开发,提高开发效率。

跟踪整个软件开发过程。

减轻开发人员的负担,节省时间,减少人为错误。

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

多人开发一定要用版本控制,不然成本更高!(比如临近上线,发现团队里开发的代码,每个人都不一样,导致上线后代码缺失!)

SVN和Git的区别

集中式版本控制-(代表产品:SVN)(类似于集中式系统)

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

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

yidcyzjfv315140.png

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

所有版本信息将与每个本地用户同步。用户无需联网即可本地查看所有版本历史,离线本地提交代码,联网时只需推送至相应服务器或其他用户的分支账户即可。因为每个用户都保存了所有的版本数据,只要一个用户的设备没有问题,所有的数据都可以恢复。

好处:每个人都有所有的代码!因为服务器损坏或者网络问题就不行了!

缺点:Git不能设置权限,所有代码都是大家的!一旦有人逃跑,他可能会拿走所有的密码。SVN可以设置权限,用户不一定拥有所有代码,所以很多公司还是用SVN来管理代码。

kght2gpxqof5141.png

Git的历史

SVN和Git的区别

SVN是一个集中的版本控制系统,版本库集中存储在中央服务器中。工作时需要先从中心服务器获取最新版本,再工作。完成工作后,需要将完成的内容推送到中心服务器。集中式版本控制系统必须联网才能工作,这对网络带宽要求很高。

Git是一个分布式版本控制系统。没有中心服务器,每个人的电脑都是一个完整的版本库。工作时不需要联网。工作结束后直接推给别人,然后合并代码。Git可以直接看到哪些代码和文件被更新和添加了。对网络没有要求,可以离线工作。

Linux社区有很多大佬!Linux内核开源项目的多人维护和开发工作,在提交补丁和保存档案的繁琐事务上浪费了大量时间(1991年到2002年)。Linux之父也没办法,花了两周时间开发Git。

2s1potyw4gi5142.png

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

Git环境配置

软件下载和安装

Git官网:https://git-scm.com/,下载Git对应操作系统的版本,想都没想就安装了。(不需要手动配置环境变量,默认情况下安装包会自动配置)

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

启动Git

801363/202205/2801363-20220503212357226-795147709.png"/>
  • 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 [email protected]   #邮箱
    

Git基本理论(核心)

Git工作区域

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

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

gw3wq2gadqv5143.png

  • 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)

ha30whql0st5144.png

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

tayz0qvqc0z5145.png

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

IDEA中集成Git

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

cg355y1px4q5146.png

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

IDEA技巧

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

jv0mc4h2twf5147.png

dsvuy2rjqld5148.png

常见合并问题

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

a00wtoikefk5149.png

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

备注:

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

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

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

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

Link to comment
Share on other sites