1、版本控制器
版本控制器方法:集中式版本控制工具(eg:svn 、cvs)、分布式版本控制工具(eg: git)(无中央服务器、无需联网、每个人电脑都是完整的版本库,多人协作只需将各自修改推送给对方)
2、git介绍
git是一个开源的分布式版本控制系统,不需要有中心服务器,有效、高速处理从很小到很大的项目版本管理。
特点:速度块、设计简单、允许成千上万并行开发的分支、完全分布式、有能力高效管理类似Linux内核一样的超大规模项目(速度、数据量)
3、git下载
git下载路径:https://git-scm.com/download
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
安装后首先要设置用户名和Email地址,very important
设置用户名
我的:git config --global user.name "Liliqing"
设置email
我的:git config --global user.email "2837937495@qq.com"
检查是否设置好用户名
git config --global --get user.name
检查是否设置好email
git config --global --get user.email
4、为常用指令配置别名
1)打开文件目录,创建.bashrc文件
touch ~ 或 .bashrc
初始化:git init
我创建了一个training1 路径:F:\test
2)Linux基本常用命令:
ll /ls 查看当前目录
cat 查看文件内容
touch 创建文件
vi vi编辑器
5、本地仓库
打开git bash窗口 执行git init(初始化当前目录为一个git仓库) ,创建后可以看到 .git目录
第一遍添加到了桌面,但是我想创建到F盘
于是
我检查了一下目录 并没有生成 但是打开F盘就会看到
我猜测有些文件隐藏了,输入ls -al,仓库创建成功输出,结果如下
6、基础操作指令
git工作目录下对文件的修改(增、删、跟新)会存在几个状态,这些修改的状态会随着执行git的命令而发生变化。
工作区-->暂存区 git add
工作区-->仓库 git commit
查看文件状态 git status
从工作区加到暂存区 有两种方式
方式一:将一个文件加到暂存区 git add ~
方式二:将所有文件加到暂存区 git add .
这时,可以自己查看一下暂存区的状态
继续提交到仓库 git commit -m "~"
再查看一下状态
git log 可以查看提交到哪个地方了(仓库里都有哪些)
下面是修改路线
vi practice01.txt 结果如图
update count=1 表示第一次跟新
7、git log 的使用
git log查看提交日志
git log --all 显示所有分支
git log --pretty=oneline 将提交信息显示为一行
git log --abbrev-commit 使得输出的commitld更简短
git log --graph 以图的形式显示
alias 用于别名
git reset --hard commitID 版本回退(commitID 可以使用git log 或git -log查看)
git reflog 查看已删除记录
左键直接点是复制 直接点滚轮是粘贴
rm ~ 删除
不希望一部分被修改 创建.gitignore touch .gitignore ---> vi .gitignore -->加入不想修改的后缀名 例如 * .a
8、遇到的问题
在这里,必须记录我遇到的一个问题
我用vi编辑的时候 无论如何都输不进去 进去之后 点i 表示改为输入 写完之后 点击esc 是结束编辑的意思,:wq 退出
修改后 提交到仓库
9、分支
git branch 查看本地分支
git branch 分支名 创建本地分支
git checkout 分支名 切换分支
git checkout -b 分支名 直接切换到一个不存在的分支 (创建并切换)
git merge 分支名称 合并分支 一个分支上的提交可以合并到另一个分支
删除分支比较特殊,不能删除当前分支,只能删除其他分支
git branch -d b1 删除分支时,需要做各项检查
git branch -D b1 不做任何检查,强制删除
master就是个分支
HEAD指向谁 谁就是当前的分支
切换分支如下:
git checkout -b 分支名 直接切换到一个不存在的分支 (创建并切换)
10、解决冲突
两个分支上对文件修改可能会冲突,需手动解决冲突,遇到冲突时,处理文件中冲突的地方,然后git add . ,git commit
退出时,ESC :wq
11、分支
master分支(生产)(线上分支,主分支,中小规模项目作为线上运行的应用对应的分支)
develop分支(开发)(从master创建的分支,一般作为开发部门的主要开发分支,开发完成后,需合并到master分支,准备上线)
feature/xxxx分支(从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上研发任务完成后需合并到develop分支)
hotfix/xxxx分支(线上bug修复使用,修复后需要合并到master、test、develop分支)
test分支(用于代码测试)、pre分支(预上线分支)
clear 清楚当前页面
12、git远程仓库
常用的托管服务:GitHub、码云、GitLab
GitHub:https://github.com/ 面向开源及私有软件项目的托管平台,只支持git作为唯一的版本库格式进行托管
码云:http://gitee.com/ 国内的一个代码托管平台,比GitHub速度快
GitLab:https://about.gitlab.com/ 用于仓库管理系统的开源项目,使用Git 作为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建的git私服。
13、gitee注册并创建仓库
14、配置SSH公钥
1)生成SSH公钥 ssh-keygen -t rsa,一路回车
查看设置生成的密钥在哪
cat ~/.ssh/id_rsa.pub
复制这一段,打开gitee的设置,粘贴到SSH公钥
返回gitbash,验证成功
ssh -T git@gitee.com
输入yes
成功啦!
15、操作远程仓库
把本地仓库推到远程仓库
复制远程仓库地址,要选中SSH
添加远程仓库 git remote add <远端名称> <仓库路径> (远端名称默认为origin)
git remote add origin 粘贴(这句话意思是 添加远程仓库 名叫origin 地址是复制的那一行)
查看远程仓库: git remote
验证一下 git remote
推送到远程仓库
将本地代码同步到远程仓库 git push origin master
最后一句话出现了new branch,是因为远端仓库目前是空的,把muster仓库推给了远端的origin仓库
再次打开仓库,就发现已经有代码啦!
--set-upstream 推送到远端的同时并且建立起和远端分支的关系
git push --set-upstream origin master
如果当前分支已经和远端分支关联,则可以省略分支名和远端名
git push 将master分支推送到已关联的远端分支
查看分支关联关系 git branch -vv命令
从远程仓库克隆
git clone <远程仓库> [本地目录]
因为没有指定克隆的名字,所以直接取名最后几位
指定克隆的名称,hello-git
从远程仓库中抓取和拉取
抓取指令 :将仓库里的跟新都抓取到本地,不会进行合并(如果不指定远端名称和分支名 将抓取所有分支)
git fetch [remote name] [branch name]
拉取命令:将远程仓库的修改拉到本地并自动进行合并,等同于fetch+merge(如果不指定远端名称和分支名,将抓取所有并跟新当前分支)
git pull [remote name] [branch name]
解决合并冲突
添加远程仓库:
git remote add origin +远程仓库地址
将master分支推送到远程仓库,并于远程仓库的master分支绑定关联关系:git push --set-upstream origin master
将远程仓库克隆到本地:
将远程仓库克隆到本地git_test02目录下:git clone +仓库地址 +克隆到本地的仓库给个名称
以精简的方式显示提交记录:git-log
将本地修改推送到远程仓库:
创建文件,然后将修改加入暂存区,提交到仓库
将master分支的修改推送到远程仓库:git push origin master
将远程仓库的修改跟新到本地:
将远程仓库修改再拉取到本地 git pull
以精简的方式显示提交记录:git-log
版权归原作者 小姚不吃糖 所有, 如有侵权,请联系我们删除。