git原理
一.新建仓库(上图本地仓库)方式:
(1)GUI方式
右键"GIT GUI"然后选择Create Repository
(2)命令行方式
右键GIT bash然后
git init
“.git文件夹"叫做"版本库”
包含".git文件夹"的目录叫做"工作目录"
“工作目录"和"暂存区”
图解
暂存区是版本库的一部分,新文件先"add"(应该是个命令)到暂存区,再"commit"(应该也是个命令)到本地仓库
具体操作
1.增加文件/修改文件后提交(增与改)
向版本库内添加文件
完成以下2图的步骤后,仅仅是将文件添加到"暂存区"
提交修改
安装tortoise后,右键"git提交"(这一步才把hello.txt添加到仓库中)
2.查看本地仓库内容(查)
本地仓库中显示有一个hello.txt,说明之前的"先弄到暂存区","再commite"已经把hello.txt添加到了仓库中
查看单个文件修改日志
ctrl选中2个版本,右键选择"比较版本差异"
3.文件删除
删除有2个:
1.只删工作目录的内容(版本库中未删除,可以恢复)
2.只删除版本库中的追踪(相当于本地工作目录文件还在,但是版本库不追踪他)
1.只删工作目录的内容(版本库中未删除,可以恢复)
一个被追踪的文件,被误删除后可以"还原"
2.删除版本库中的追踪和本地文件一起删除(彻底删除)
先在工作目录中删除这个文件,然后"提交"一次即可真正删除
提交成功后,再看"版本库浏览器",发现只剩下一个文件了
3.只删除版本库中的追踪(相当于本地工作目录文件还在,但是版本库不追踪他)
这种删除应用于你不小心把编译生成的文件比如.class文件加入了版本库的跟踪,但是你又不想现在在工作目录中删除它,而是"取消跟踪"
此时浏览版本库浏览器,发现文件还在
这时候我们需要提交一次,就能取消追踪了
将java工程添加到版本控制系统
tortoise->删除并添加到忽略列表->根据名称删除和忽略2项
记得也要把.gitignore也添加到"版本仓库"里面
.gitignore文件的忽略语法
这部分自己上网查
推送到远程仓库
SSH方式推送到远程仓库
私钥是要自己保留下来,不要分发给任何人
公钥可以分发给很多人
STEP1创建密钥对
在gitbash中输入
-t rsa是选择密钥类型这,这里选择的是rsa类型的密钥
ssh-keygen -t rsa
在目录C:\Users\txt85.ssh下可以找到2个密钥文件
STEP2把你的公钥上传给git服务器
用文本编辑器打开你的id_rsa.pub文件,复制里面的全部内容
进入gitee的"设置"页面->SSH公钥
把你的公钥黏贴进去
STEP3在gitee上创建一个新的仓库
STEP4把你的本地仓库上传到gitee的远程仓库
由于之前我已经在本地创建了本地仓库,
所以我们需要使用gitee创建仓库时的"已有仓库?"部分的命令
简易的命令行入门教程:
Git 全局设置:
git config --global user.name "TXT85"
git config --global user.email "5147735+TXT85@user.noreply.gitee.com"
创建 git 仓库:
mkdir gitee-study
cd gitee-study
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin git@gitee.com:TXT85/gitee-study.git
git push -u origin master
已有仓库?
cd existing_git_repo
git remote add origin git@gitee.com:TXT85/gitee-study.git
git push -u origin master
使用图形界面ssh
STEP1环境配置
在"工作空间"目录下,右键Git同步
远端url->管理
写上你的仓库地址,仓库地址在这里可以看
填写到"URL"一栏
点击"putty密钥"右侧的按钮(但是实际上我使用的不是putty密钥,而是ssh密钥)
然后选择keygen命令生成的那个私钥
STEP2 提交
然后我们退出设置,回到这个页面,点击"推送"
把一个远程仓库克隆到本地
这个指的是本地未建仓库的情况下
STEP1 新建一个空文件夹
右键打开git bash
输入命令git clone,仓库地址在下图这种位置看
git clone git@gitee.com:TXT85/gitee-study.git
STEP2 克隆完成
把修改推送到远端仓库
如果本地仓库修改了一些文件
想推送到远端仓库
STEP1 做出修改
把hello1进行跟踪(按照之前的教程)
STEP2 把这个[修改]commit到本地仓库
(请按照前面"作出修改"的教程来)
STEP3 推送到远程仓库
右键打开"git同步"
点击后会看见一些修改信息
在"远端URL"那里可以选择要推送的仓库
在远程仓库看见了hello1
冲突产生原因以及解决
冲突产生的原因
1.对于文件A
2.服务器上的 [文件A] 版本为1.1版本
3.但是你基于 [文件A] 的1.0版本进行修改
4.然后你把你修改后的 [文件A] 提交到了服务器
5.由于你不是基于 [文件A] 最新的版本进行修改,所以产生冲突
解决冲突
让我在实际操作中引发一次冲突并解决它
STEP1 在本地仓库gitee-study中修改hello1.txt
在本地仓库gitee-study中修改hello1.txt
这个hello1.txt现在版本为1.1版本
1 然后我先[提交]到本地仓库
2 再[推送]到远程仓库
2 再[推送]到远程仓库
现在gitee服务器是这样子
STEP2 在本地仓库repo1中修改hello1.txt
然后我在另一个仓库repo1中,也修改了hello1.txt
提交到本地仓库后(提交到本地仓库是不会出错的)
再推送到远端仓库
提交后直接推送
点击推送后,出现冲突
此时拉取
拉去后会提示冲突
此时用文本编辑器在这个文件中手动解决冲突
<<<<HEAD是你当前本地仓库所作的1.1版本的修改
====分隔下方的是服务器仓库储存的修改
解决完冲突,重新[提交]到本地仓库
中间会弹出一个对话框,选择"忽略"
然后我们[推送]一次
现在服务器上的状态