git版本控制工具入门教程(使用IDEA)

历史
Linux开源项目使用bitkeeper分布式版本控制系统来管理和维护代码,bitkeeper与Linux终止合作关系后,Linux团队开发了自己的分布式版本控制系统git。

git和svn的区别:
①svn是集中式管理工具,必须连接到服务器上才能进行代码的提交、修改等操作,如果出现单点故障,就无法继续正常工作。②git是分布式管理工具,没有中央服务器,每个人的电脑就是一个完整的版本库。

git工作流程

①从远程仓库clone资源到本地仓库。
②从本地仓库中checkout代码到工作区然后进行代码修改。
③在提交前先将代码从工作区add到暂存区。
④提交修改,从暂存区commit到本地仓库,本地仓库中保存修改的各个历史版本。
⑤修改完成后,需要和团队共享代码时,可以将代码push到远程仓库。
在这里插入图片描述

安装

之前安装过了,很久没有用,打开命令行,用git clone https://github.com/git/git更新一下git的版本。
在这里插入图片描述
更新完毕后通过git --version查询当前版本
在这里插入图片描述
还需要下载一个tortoisegit
在这里插入图片描述
安装时注意这一步选ssh
在这里插入图片描述
安装语言包后refresh就有中文了
在这里插入图片描述
目录就选git的bin目录
在这里插入图片描述
用户名和邮箱随便填就行了,下一步确定左边选项是SSH,然后点完成
在这里插入图片描述


本地仓库

创建本地仓库

可以在桌面新创建目录repository/repo1,右键git bash here,使用git init,之后会出现一个.git目录(需要显示隐藏项目)
在这里插入图片描述

向本地仓库添加文件

.git就是本地版本库,包含.git的目录repo1就是工作目录,添加的文件应该放在工作目录下,也就是repo1中。
创建一个hello.txt,随便输入一些字符,按以下步骤添加
在这里插入图片描述
点击确定后提示添加完成,点击确定,此时文件就加入了暂存区
在这里插入图片描述
将文件从暂存区提交至本地仓库,右键选择提交
在这里插入图片描述
必须要添加日志信息,然后提交
在这里插入图片描述
在这里插入图片描述
重启后会发现提交的hello.txt多了绿色的勾,很不爽的是其他文件都给我标上了问号。。
这时把C:/Users/用户名/.git文件夹删掉刷新就可以了
在这里插入图片描述
在这里插入图片描述


修改本地仓库文件内容并提交

如果修改了文件内容,会变成红色的感叹号
在这里插入图片描述
再次提交,添加对应的日志信息
在这里插入图片描述
提交成功后又变成绿色
在这里插入图片描述
通过显示日志可以查看修改信息
在这里插入图片描述
在这里插入图片描述


删除本地仓库文件和恢复

直接右键删除
在这里插入图片描述
如果需要恢复:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果想要真正地删除掉,则删除后进行一次提交,此时便彻底删除无法恢复
在这里插入图片描述


将Java工程添加到本地仓库

向将Java工程拷贝到本地仓库目录下
在这里插入图片描述
右键添加到暂存区
在这里插入图片描述
将无用的.idea和out目录忽略掉
在这里插入图片描述
选择保留本地文件,然后将.gitnore添加,最后返回上一级目录提交
在这里插入图片描述
成功提交
在这里插入图片描述


远程仓库

在github创建远程仓库

注意不要勾选使用readme初始化
在这里插入图片描述

创建SSH密钥并在GitHub配置公钥

在本地仓库通过ssh-keygen -t rsa创建密钥
在这里插入图片描述
一般创建在用户的.shh目录下
在这里插入图片描述
记事本打开.pub结尾的公钥,在GitHub的设置里配置
在这里插入图片描述

使用SSH方式将本地仓库推送到远程

打开刚才创建的远程仓库,找到推送本地仓库的命令
在这里插入图片描述
在本地仓库使用命令行推送
在这里插入图片描述
再次刷新后发现exam工程已被推送进来
在这里插入图片描述

使用tortoisegit

创建一个新的远程仓库
在这里插入图片描述
在本地仓库右键git 同步
在这里插入图片描述
点击管理
在这里插入图片描述
配置时先将网络的ssh客户端设置为本机git下的ssh.exe
在这里插入图片描述
设置远端url为远程仓库url,putty密钥是之前ssh密钥中不带pub结尾的私钥
在这里插入图片描述
之后确定,然后点击推送
在这里插入图片描述
刷新myRepo2远程仓库,已经被推送进来
在这里插入图片描述


使用https推送

再创建一个新的仓库
在这里插入图片描述
在本地仓库使用tortoisegit,配置远端,url为远程仓库的https地址,直接复制浏览器地址栏就行
在这里插入图片描述
点击确定,选是,然后推送
在这里插入图片描述

克隆远程仓库到本地

使用SSH
在这里插入图片描述
复制该地址,在本地仓库打开bash命令行,使用git clone 复制的地址进行clone
在这里插入图片描述
使用HTTPS
在这里插入图片描述
右键git克隆
在这里插入图片描述
将https地址复制到url栏
在这里插入图片描述
克隆成功
在这里插入图片描述


推送/拉取修改的文件

在这里插入图片描述
在本地仓库创建一个update.txt,然后添加到暂存区,添加到本地仓库,推送到远程仓库
在这里插入图片描述
在这里插入图片描述
刷新远程仓库,已更新
在这里插入图片描述


本地仓库拉取已更新的文件
在这里插入图片描述
在git同步里选择拉取即可
在这里插入图片描述


文件冲突问题

现在repo1和myRepo中都有update.txt文件,分别对其修改并提交到本地仓库
在这里插入图片描述
在这里插入图片描述
repo1提交后,再推送到远程仓库,推送成功
在这里插入图片描述
之后在myRepo中修改,并提交本地
在这里插入图片描述
提交成功
在这里插入图片描述
但是推送至远程仓库时会失败,因为远程仓库update.txt已经被repo1修改过,现在myRepo中不是最新的了,类似于Java的CAS机制。。repo1和myRepo都取到的是update.txt,同时修改,repo1要更新时发现没被更新过,直接更新,myRepo更新时发现已经被更新了,所以推送失败。。
在这里插入图片描述
不能推送,选择拉取
在这里插入图片描述
选择解决冲突
在这里插入图片描述
打开文件把这3行删掉
在这里插入图片描述
只会提交到本地仓库,然后推送
在这里插入图片描述
此时远程仓库中成功更新
在这里插入图片描述


私有远程仓库

创建Linux上的私有git服务器

我使用的是centos8的虚拟机
使用yum install git下载并安装git
在这里插入图片描述
安装完毕后用git --version查询安装版本
adduser -r -c 'git version control' -d /home/git -m git在/home/git创建git用户,然后更改git用户的密码
在这里插入图片描述
切换到git用户 cd进到主目录 创建一个repo1仓库
在这里插入图片描述
使用git init --bare初始化
在这里插入图片描述

推送至linux远程仓库

在windows的本地仓库推送,将url进行如下设置,192.168.2.142是我虚拟机的ip地址
(我压根没想到能连上 我虚拟机是桥接模式 我不知道ip地址怎么找 用secureCRT连了一下午都没成功 本来准备放弃的。。。我也不懂)
在这里插入图片描述
过程中就输入刚才git用户的密码
在这里插入图片描述

从远程仓库克隆

在这里插入图片描述
url和刚才的相同
在这里插入图片描述
之后会让你输入git用户的密码
在这里插入图片描述
成功后打开复制的仓库
在这里插入图片描述


分支

在我们每次的提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的,所以HEAD指向的就是当前分支。

比如说钢铁侠MK1就是master,MK6就是MK1的一个分支,MK7也是MK1的一个分支,MK6和MK7就是MK1的两个分支,它们之间的开发是不会互相影响的,类似于二叉树。分支也是可以合并的,例如MK6和MK7合体为MK50,就是master。

创建分支

在repo1仓库右键创建一个分支
在这里插入图片描述
起名为branch
在这里插入图片描述

分支的合并与冲突解决

在当前(master)分支创建一个master.txt,添加到暂存区并提交到本地仓库
在这里插入图片描述
在这里插入图片描述
然后修改update的内容,并提交到master分支
在这里插入图片描述
在这里插入图片描述
现在切换到branch分支
在这里插入图片描述
在这里插入图片描述
可以发现branch分支是没有master.txt文件的,update也没有被修改,创建branch.txt,并修改update的内容然后提交
在这里插入图片描述
在这里插入图片描述
切换回master分支,进行合并
在这里插入图片描述
合并分支选branch
在这里插入图片描述
多出了branch分支创建的文件
在这里插入图片描述
打开update 移除这3句话
在这里插入图片描述
解决冲突
在这里插入图片描述
提交到master
在这里插入图片描述
成功
在这里插入图片描述


在IDEA操作git

配置git

创建一个新项目 gitTest
在这里插入图片描述
在settings里搜索git配置路径 可以用test尝试,配置后选择OK
在这里插入图片描述
在src创建一个类,随便写点什么
在这里插入图片描述

创建本地仓库

在VCS里创建本地仓库
在这里插入图片描述
选择当前项目的父目录IdeaProjects,选择ok
在这里插入图片描述
之后查看该目录,会发现多出了.git目录
在这里插入图片描述

添加到暂存区

回到idea右键项目add到暂存区
在这里插入图片描述

提交到仓库

点击IDEA右上角的绿色对勾提交
在这里插入图片描述
选择src和.imi的配置文件,然后添加注释,提交
在这里插入图片描述
在这里插入图片描述
之后再添加的代码会被绿色标注
在这里插入图片描述
在这里插入图片描述

推送到远程仓库

从VCS->git->push
在这里插入图片描述
点击define remote,复制githunb的远程仓库的url
在这里插入图片描述
点击push,会要求输入GitHub的账户和密码
在这里插入图片描述
这里我push失败了,貌似是因为版本不一致原因,我重新创建一个仓库
在这里插入图片描述
按照之前得步骤push到这个仓库,成功了~
在这里插入图片描述
刷新一下 发现远程仓库也更新了
在这里插入图片描述

从远程仓库克隆

在这里插入图片描述
将githunb的仓库https地址复制到url
在这里插入图片描述
在这里插入图片描述
一路选yes和next,clone成功
在这里插入图片描述
添加一行代码,提交,推送
在这里插入图片描述
打开github 已更新
在这里插入图片描述

从远程仓库拉取

打开一开始的旧代码
在这里插入图片描述
点击拉取
在这里插入图片描述
拉取成功
在这里插入图片描述

使用分支

创建
在这里插入图片描述
创建一个分支叫dev
此时当前分支是dev,哪个分支上有标签,哪个就是当前分支
在这里插入图片描述
增加一个方法
在这里插入图片描述
提交
在这里插入图片描述
点击checkout回到master
在这里插入图片描述
此时不再有dev方法
在这里插入图片描述

发布了67 篇原创文章 · 获赞 335 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_41112238/article/details/105217415