来自bilibili的git学习
git作者
是linux的作者(linux的开发是根据unix的开源盗版),但是作者为了能够控制版本,所以开发了一个版本控制工具,但是当时使用的是BotKeeper这个收费的软件,但是为了能够更好的使用,这个大神就自己开发了一个
所以说git最早就是管理linux的代码的,逐步延伸了windows版本和max版本
git和svn的对比
- svn是一个集中式的版本管理工具。使用的时候需要先在服务器上装一个svn服务器,客户机直接提交代码到svn服务器,所以是一个集中式的代码管理工具
- git是分布式的版本管理工具,也就是说没有中央服务器,在每个客户机上都有一个独立的版本仓库。
- git的工作机制:每个开发人员都有自己的一个本地版本仓库,这样就可以直接和自己的仓库进行信息交换,从而达到版本的控制,如果是单人项目,那么就可以直接自己使用自己的本地仓库就完事了。多人项目时,这个时候就需要交换代码,所以就需要一个远程仓库(共享版本库),那么每个人需要做的就是将自己的代码复制(push)到远程仓库即可,其他人需要代码时就可以直接在共享仓库中下载(clone)即可。
- 所以git和svn最大的区别在于,能够在不需要多人项目时,git有一个本地仓库的概念,但是svn没有,只有自己的独立 仓库就完事了。其实本质的原理没什么区别,只是操作方式的一点区别罢了
git的工作流程
首先创建一个本地仓库
然后就可以向本地仓库添加代码
代码可以放到工作区
如果需要将工作区加到本地仓库中,就需要先将工作区代码加到暂存区中,然后再提交到本地仓库即可
然后如果需要协作开发,就可以将本地仓库向远程仓库复制一份即可
git的安装
首先下载安装git
安装完成后右键可以看到两个选项
- Git GUI,也就是git的图形界面
- GIT BASH,也就是git的命令行,在哪个文件下右键,显示的命令行路径就是在哪个文件下
使用git --version可以看git的版本
TortoiseGit的使用
安装时选择使用OpenSSH
注意需要指定git的牡蛎
配置一个姓名和邮箱
安装完毕即可右键多出来三个
Git Clone
Git Create reposity here
TortoiseGit
汉化乌龟
下载 语言包
安装语言包
然后右键setting,选择language中就可以换语言包了
使用git
创建一个本地仓库
- 右键GIT GUI 选择createXXX
- GIT BASH直接使用命令git init
- 使用乌龟,有一个创建版本库,注意不要选择制作纯版本库(会制作一个不带目录的版本库)
向本地版本库中添加文件
首先,如果想向本地仓库中添加文件,那么你建立的文件,就需要在本地仓库这个目录下,也就是和.git同级的目录下
右键文件,选择乌龟的添加即可(注意重启)
这个时候有个+,是在暂存区中
区分几个概念
- 工作目录就是工作区,也就是和.git在同一级下的那个目录
- 点击添加,就添加到了暂存区
- 点击右键的提交,就可以提交到,其中必须写一个日志,然后点击提交,就可以添加到本地仓库中
修改内容
首先,对于乌龟来说,有一个版本库浏览器,可以看到本地仓库中的文件
修改文件后,可以直接点击提交到"master",其中需要填写日志
之后可以右键显示日志来查看版本,还可以比较版本差异
删除文件
- 误删,可以从版本库中进行还原
- 真正想删除,对文件进行删除之后,可以点击提交,并写上日志,点击提交
这样版本库浏览器中就没有了对应的文件 - 只删除版本库中的文件,但是保留本地文件,就可以选择删除保留本地副本
实战
将java工程加到本地仓库
首先,放到对应的本地仓库同级目录下
其次添加到暂存区
注意的是,这个时候可能需要忽略一些文件,因为对于版本控制来说我们只需要关注代码就可以了,所以像.idea和out目录都可以
不要
忽略的操作,选中对应文件夹,点击右键,点击删除并添加到忽略列表,选择根据名称删除和忽略,选择递归,也就是忽略该文件夹下的文件和文件夹
跟着一些操作就完事了
这样会生成一个.gitgnore,其中的信息就是忽略的文件夹的名称,这样的话,这个问价 也需要加到版本库 中
远程仓库github(gitee中国的)
这个就可以帮助我们来多人协助工作
我们在github上手动创建一个project
然后记得不要选择建立一个README这个选项
将本地仓库推送到远程
- SSH方式(需要ssh的公钥密钥之间建立连接)
两步,第一步,建立连接
第二步,推送本地仓库信息
实战生成密钥对$ ssh-keygen -t rsa一路回车就完事了
生成在当前用户目录下的.ssh目录下,其中有后缀是.pub的就是公钥,没有的就是私钥,打开公钥,复制内容,放在github中在github中选择setting,选择ssh and GPG keys,在其中写上title,将公钥复制在里面就好了,然后保存即可以,只需要设置一次,针对当前用户就可以了
然后就可以建立连接,git remote add origin +github给出的那个路径
推送本地仓库git push -u origin master ,然后就可以推送去了
实际操作
首先有一个ssh协议来保证安全,然后建立连接,然后推出自己的本地仓库
-
图形界面
-- 1.首先确认该乌龟使用的是我们与github之间定义的那个ssh管理关系
对应的就是Git->user->bin->ssh.exe
-- 2.建立连接,第一个名称,一般都叫做origin(无所谓),url在github中获取
putty密钥建立好的ssh私钥(记得选择全部文件)
-- 3.然后点击推送即可
未操作成功,待续。。。。
- 使用https进行推送
这个就比较简单了,直接使用图形化界面,就是直接输入远端和URL即可,在推送的时候会需要输入github的密码
总结一下推送到远程仓库
对于ssh来说,第一步是需要建立一个ssh的协议,获取ssh的密钥
对于https,就直接使用就可以了
在实际操作中,只需要建立好origin就可以将该次项目,多次向一个github的project中多次简介的推送,即点击对应的推送按钮就可以实现推送
但是其实无论怎么样都可以推送到github,所以为什么不选择一个简单的方式呢
从远程仓库克隆一个仓库到本地
- 建立一个目录
- 使用命令行 git clone +github给出的路径
git clone xxx
搭建一个私有的git服务器
在linux中操作,解决的是项目代码需要保密,这种情况下不能将代码放在github上,所以就需要搭载一个私有的git服务器,需要的时候再学习
在idea上使用git
- 首先在idea中配置一下git
setting->Version Control ->Git
选择一下git.exe的路径即可 -
创建一个本地仓库,也就是将该项目所在目录的上一次目录建立成一个本地仓库
这样就可以将该项目添加到暂存区了
然后点击右上角新出现的git中的对号就可以commit到本地仓库了
这里可以选择想要导入提交到本地仓库的哪些信息
还可以写上对应的日志文件
将本地代码推到共享仓库(github)
操作时VCS->Git->push->Define remote
使用https方式,添加上url即可push,其中需要输入github账户和密码
从远程仓库clone
添加上URL即可clone(使用https的方式)
然后一直下一步就完事了
总结
首先是创建一个项目,然后从VCS->Import Into Version Control->Create git Repository,选择该项目的上一级目录,也就是在该项目同级的地方建立一个.git文件夹
项目修改完毕之后,可以点击右上角的对钩,在弹出的页面中写上日志以及选择需要添加到本地仓库的文件夹和文件,然后就可以添加到本地仓库
然后点击VCS->GIt->Push->Define remote ->写上github的https的地址即可实现本地仓库push到共享仓库
小知识点
1.SSH是什么,是一个现在较为可靠的一个远程通信协议专为远程登录 会话和其他网络服务提供安全性的协议,可以有效防止信息的泄露;是基于密钥的安全验证,