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

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

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

git工作流程

①从远程仓库clone资源到本地仓库。
②从本地仓库中checkout代码到工作区然后进行代码修改。
③在提交前先将代码从工作区add到暂存区。
④提交修改,从暂存区commit到本地仓库,本地仓库中保存修改的各个历史版本。
⑤修改完成后,需要和团队共享代码时,可以将代码push到远程仓库。
git版本控制工具入门教程(使用IDEA)

安装

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


本地仓库

创建本地仓库

可以在桌面新创建目录repository/repo1,右键git bash here,使用git init,之后会出现一个.git目录(需要显示隐藏项目)
git版本控制工具入门教程(使用IDEA)

向本地仓库添加文件

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


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

如果修改了文件内容,会变成红色的感叹号
git版本控制工具入门教程(使用IDEA)
再次提交,添加对应的日志信息
git版本控制工具入门教程(使用IDEA)
提交成功后又变成绿色
git版本控制工具入门教程(使用IDEA)
通过显示日志可以查看修改信息
git版本控制工具入门教程(使用IDEA)
git版本控制工具入门教程(使用IDEA)


删除本地仓库文件和恢复

直接右键删除
git版本控制工具入门教程(使用IDEA)
如果需要恢复:
git版本控制工具入门教程(使用IDEA)
git版本控制工具入门教程(使用IDEA)
git版本控制工具入门教程(使用IDEA)
git版本控制工具入门教程(使用IDEA)
如果想要真正地删除掉,则删除后进行一次提交,此时便彻底删除无法恢复
git版本控制工具入门教程(使用IDEA)


将Java工程添加到本地仓库

向将Java工程拷贝到本地仓库目录下
git版本控制工具入门教程(使用IDEA)
右键添加到暂存区
git版本控制工具入门教程(使用IDEA)
将无用的.idea和out目录忽略掉
git版本控制工具入门教程(使用IDEA)
选择保留本地文件,然后将.gitnore添加,最后返回上一级目录提交
git版本控制工具入门教程(使用IDEA)
成功提交
git版本控制工具入门教程(使用IDEA)


远程仓库

在github创建远程仓库

注意不要勾选使用readme初始化
git版本控制工具入门教程(使用IDEA)

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

在本地仓库通过ssh-****** -t rsa创建**
git版本控制工具入门教程(使用IDEA)
一般创建在用户的.shh目录下
git版本控制工具入门教程(使用IDEA)
记事本打开.pub结尾的公钥,在GitHub的设置里配置
git版本控制工具入门教程(使用IDEA)

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

打开刚才创建的远程仓库,找到推送本地仓库的命令
git版本控制工具入门教程(使用IDEA)
在本地仓库使用命令行推送
git版本控制工具入门教程(使用IDEA)
再次刷新后发现exam工程已被推送进来
git版本控制工具入门教程(使用IDEA)

使用tortoisegit

创建一个新的远程仓库
git版本控制工具入门教程(使用IDEA)
在本地仓库右键git 同步
git版本控制工具入门教程(使用IDEA)
点击管理
git版本控制工具入门教程(使用IDEA)
配置时先将网络的ssh客户端设置为本机git下的ssh.exe
git版本控制工具入门教程(使用IDEA)
设置远端url为远程仓库url,putty**是之前ssh**中不带pub结尾的私钥
git版本控制工具入门教程(使用IDEA)
之后确定,然后点击推送
git版本控制工具入门教程(使用IDEA)
刷新myRepo2远程仓库,已经被推送进来
git版本控制工具入门教程(使用IDEA)


使用https推送

再创建一个新的仓库
git版本控制工具入门教程(使用IDEA)
在本地仓库使用tortoisegit,配置远端,url为远程仓库的https地址,直接复制浏览器地址栏就行
git版本控制工具入门教程(使用IDEA)
点击确定,选是,然后推送
git版本控制工具入门教程(使用IDEA)

克隆远程仓库到本地

使用SSH
git版本控制工具入门教程(使用IDEA)
复制该地址,在本地仓库打开bash命令行,使用git clone 复制的地址进行clone
git版本控制工具入门教程(使用IDEA)
使用HTTPS
git版本控制工具入门教程(使用IDEA)
右键git克隆
git版本控制工具入门教程(使用IDEA)
将https地址复制到url栏
git版本控制工具入门教程(使用IDEA)
克隆成功
git版本控制工具入门教程(使用IDEA)


推送/拉取修改的文件

git版本控制工具入门教程(使用IDEA)
在本地仓库创建一个update.txt,然后添加到暂存区,添加到本地仓库,推送到远程仓库
git版本控制工具入门教程(使用IDEA)
git版本控制工具入门教程(使用IDEA)
刷新远程仓库,已更新
git版本控制工具入门教程(使用IDEA)


本地仓库拉取已更新的文件
git版本控制工具入门教程(使用IDEA)
在git同步里选择拉取即可
git版本控制工具入门教程(使用IDEA)


文件冲突问题

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


私有远程仓库

创建Linux上的私有git服务器

我使用的是centos8的虚拟机
使用yum install git下载并安装git
git版本控制工具入门教程(使用IDEA)
安装完毕后用git --version查询安装版本
adduser -r -c 'git version control' -d /home/git -m git在/home/git创建git用户,然后更改git用户的密码
git版本控制工具入门教程(使用IDEA)
切换到git用户 cd进到主目录 创建一个repo1仓库
git版本控制工具入门教程(使用IDEA)
使用git init --bare初始化
git版本控制工具入门教程(使用IDEA)

推送至linux远程仓库

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

从远程仓库克隆

git版本控制工具入门教程(使用IDEA)
url和刚才的相同
git版本控制工具入门教程(使用IDEA)
之后会让你输入git用户的密码
git版本控制工具入门教程(使用IDEA)
成功后打开复制的仓库
git版本控制工具入门教程(使用IDEA)


分支

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

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

创建分支

在repo1仓库右键创建一个分支
git版本控制工具入门教程(使用IDEA)
起名为branch
git版本控制工具入门教程(使用IDEA)

分支的合并与冲突解决

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


在IDEA操作git

配置git

创建一个新项目 gitTest
git版本控制工具入门教程(使用IDEA)
在settings里搜索git配置路径 可以用test尝试,配置后选择OK
git版本控制工具入门教程(使用IDEA)
在src创建一个类,随便写点什么
git版本控制工具入门教程(使用IDEA)

创建本地仓库

在VCS里创建本地仓库
git版本控制工具入门教程(使用IDEA)
选择当前项目的父目录IdeaProjects,选择ok
git版本控制工具入门教程(使用IDEA)
之后查看该目录,会发现多出了.git目录
git版本控制工具入门教程(使用IDEA)

添加到暂存区

回到idea右键项目add到暂存区
git版本控制工具入门教程(使用IDEA)

提交到仓库

点击IDEA右上角的绿色对勾提交
git版本控制工具入门教程(使用IDEA)
选择src和.imi的配置文件,然后添加注释,提交
git版本控制工具入门教程(使用IDEA)
git版本控制工具入门教程(使用IDEA)
之后再添加的代码会被绿色标注
git版本控制工具入门教程(使用IDEA)
git版本控制工具入门教程(使用IDEA)

推送到远程仓库

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

从远程仓库克隆

git版本控制工具入门教程(使用IDEA)
将githunb的仓库https地址复制到url
git版本控制工具入门教程(使用IDEA)
git版本控制工具入门教程(使用IDEA)
一路选yes和next,clone成功
git版本控制工具入门教程(使用IDEA)
添加一行代码,提交,推送
git版本控制工具入门教程(使用IDEA)
打开github 已更新
git版本控制工具入门教程(使用IDEA)

从远程仓库拉取

打开一开始的旧代码
git版本控制工具入门教程(使用IDEA)
点击拉取
git版本控制工具入门教程(使用IDEA)
拉取成功
git版本控制工具入门教程(使用IDEA)

使用分支

创建
git版本控制工具入门教程(使用IDEA)
创建一个分支叫dev
此时当前分支是dev,哪个分支上有标签,哪个就是当前分支
git版本控制工具入门教程(使用IDEA)
增加一个方法
git版本控制工具入门教程(使用IDEA)
提交
git版本控制工具入门教程(使用IDEA)
点击checkout回到master
git版本控制工具入门教程(使用IDEA)
此时不再有dev方法
git版本控制工具入门教程(使用IDEA)