- 准备工作:git下载:Git - Downloads
- 环境配置
- 命令形式:git config --global user.name
- 例如:git config --global "xxx"
- 命令形式:git config --global user.email
- 例如:git config --global "xxxxx@xxxx"
- 命令形式:git config --global user.name
方法一:
-
获取本地仓库
-
在电脑任意位置创建一个空目录(例如code)作为我们的本地GIt仓库
-
进入这个目录中,点击右键打开GIt bash窗口
-
执行git init 初始化,也就是工作区
-
如果创建成功可在文件下看到隐藏的.git目录 有这个就是工作区了
-
-
基础操作指令
-
创建一个文件
-
git add (工作区 -》 暂存区)
-
git commit (暂存区 -》 本地仓库)
-
查看日志: git log
-
版本回退
-
命令:git reset --hard commitID
-
想回退到哪个版本就输入commitID,可以使用git-log 或者 git log 命令查看
-
复制粘贴小技巧,左键上色复制,中间粘贴
-
如何查看已经删除的记录
-
命令:git reflog
-
-
-
-
git分支常用指令
-
查看分支命令:git branch
-
创建分支命令:git branch + 分支名
-
-
HEAD是什么意思呢:假设我本地有多个分支,我想修改一个文件,不可能又修改a分支又修改b分支这就乱套了,所以有个规定就是我们的工作区只能为一个分支服务,也就是我当前处于哪个分支上。有多个分支之后我们只能对一个分支进行修改,这个分支我们称为当前分支
-
如何切换?
-
git checkout 分支名
-
我们还可以直接切换到一个不存在的分支(创建并切换)
-
命令:git chechout -b 分支名
-
-
- 合并分支
-
不同分支文件也不一样,怎么合并呢?
-
一般都是把其他分支合并到master ,记得先把分支切换到master
-
命令:git merge + 分支名
-
-
-
删除分支
-
不能删除当前分支,只能删除其他分支
-
命令形式
-
git branch -d b1 删除分支时,需要做各种检查
-
git branch -D b1 不做任何检查,强制删除
-
-
-
分支流程图
-
-
注册一个网站码云、阿里云等等
-
创建远程仓库
-
配置SSH公钥
-
生成公钥
- ssh-keygen -t rsa
- 一直回车就算有也会被覆盖
-
-
git设置账户公钥
- 获取公钥指令: cat ~/.ssh/id_ras.pub
- 把他们都复制到公钥里面
- 验证是否配置成功
-
ssh -T git@codeup.aliyun.com --- 不同的托管平台地址也不一样
-
点击yes
-
-
添加远程仓库
- 此操作是先初始化本地库,然后已创建的远程库进行对接 。大部分都是一个本地仓库对应一个远程仓库
- 指令: git remote add origin(一般都用这个名字) + (git@codeup.aliyun.com:xxxxxxxxxxxxx.git)
- 仓库路径,从远端服务器获取的URL (我们选择SSH)
-
查看远程仓库
- 命令:git remote 查看是否创建成功
- 命令:git remote 查看是否创建成功
-
推送到远程仓库
-
命令形式:git push [-f] [--set-upstream][远端名称[本地分支名][:远端分支名]]
-
远端名字:origin(我们之前取的)
-
本地分支名和远端分支名是一样的
-
如果远程分之合本地分支名称相同,则可以只写本地分支
-
命令:git push origin master
-
-
[-f]是强制覆盖:本地的代码和远端的代码修改的是同一个东西,会有冲突不给你退,-f的意思是就以我这个为准强制覆盖
-
--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。 -- 第一次要加上
-
命令:git push --set-upstream origin master
-
git branch -vv : 专门看本地分支和远程分支的对应关系的
-
之前的
-
关联之后的
-
-
-
如果当前分支已经和远端分支关联,则可以省略分支名和远端名
-
命令: git push 将master分支推送到已关联的远端分支。
-
-
本地分支与远程分支的关联关系
-
查看关联关系我们可以使用命令:git branch -vv
-
-
————————————————————分割线————————————————————
方法二:(用的比较多 )
-
从远程仓库克隆
- 创建一个新的文件夹然后输入命令:git clone + [本地路径]
- git clone + SSH公钥 + 名字 (不加名字会取最后那部分)
- 这个操作不会很频繁
- 现在有两个仓库,一个是从本地推到远端的(左),还有一个是从远端拉下来的(右)
- 创建一个新的文件夹然后输入命令:git clone + [本地路径]
-
从远程仓库中抓取和拉取
- 抓取指令:git fetch [remote name][branch name]
- [remote naem]:我们已经固定死了叫origin
- [branch name]::把远端哪一个分支的更新拉到本地来
- 抓取指令就是将仓库的更新都抓到本地,不会进行合并
- 拉取命令 : git pull [remote name][branch name]
- 拉取指令就是将远端仓库的修改拉到本地自动进行合并,等同于fetch+merge
-
如果不指定远端名称和分支名,则抓取所有并更新当前分支
- 拉取指令就是将远端仓库的修改拉到本地自动进行合并,等同于fetch+merge
- 抓取指令:git fetch [remote name][branch name]
-
解决合并冲突
-
远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同
-
解决方式:
-
看提示找到冲突文件进行修改,然后再push
-
-
-
模拟冲突场景
-
假设在本地仓库创建了test4.txt文件,已经上传到本远程仓库了
vim test4.txt中写上了int i = 10;
-
此时我在克隆远端仓库中也改test4.txt文件
vim test4.txt 中修改了 int i = 20;
-
我们发现在克隆远端的仓库中pull的时候会报错
此时查看test4.txt
发现有两个,正好是我们修改同一行的代码,解决方法就是留一个数据就行了
然后再add commit push,因为远端有变化所以要在本地仓库也要pull
此时远端仓库和本地仓库数据一样
-
-
总结一句话就是:先在本地git pull 把冲突给解决掉才能进行push。
-
git功能丰富,有兴趣一定要去学习学习了解了解。