https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
Q1:什么是GIT?
A1:分布式版本控制系统。
分布式/集中式: 多台电脑同时更改一个文件,分布式每台电脑都可以自行记录版本并且最终这些版本可以有序合并/多台电脑同时修改一个文件,其中有个主机有绝对发言权,所有人都靠可该主机对话控制版本,若该主机炸了那么版本系统就停止工作。
版本控制:每一次修改文件都产生一个新版本 ,版本控制就是记录这些修改的
着手使用GIT:
安装:
https://pan.baidu.com/s/1kU5OCOB?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0&traceid=#list/path=%2Fpub%2Fgit
本地基本应用命令
gitinit//初始化文件夹,打开文件的显示隐藏文件夹,发现新增.git文件新增文件夹
g
i
t
i
n
i
t
/
/
初
始
化
文
件
夹
,
打
开
文
件
的
显
示
隐
藏
文
件
夹
,
发
现
新
增
.
g
i
t
文
件
新
增
文
件
夹
git add file 把新增文件添加到缓冲区,预备提交
gitcommit−m“在这里写下此次提交的备注,这很重要”提交到当前分支
g
i
t
c
o
m
m
i
t
−
m
“
在
这
里
写
下
此
次
提
交
的
备
注
,
这
很
重
要
”
提
交
到
当
前
分
支
git log 看提交记录
gitlog–pretty=online查看简洁版提交记录(id+note)
g
i
t
l
o
g
–
p
r
e
t
t
y
=
o
n
l
i
n
e
查
看
简
洁
版
提
交
记
录
(
i
d
+
n
o
t
e
)
git reset –hard HEAD^ ^的个数n表示回退n个版本,–hard表示强制回退
gitreset−hardxxxxxxxx表示版本的id,通过此id可以恢复到指定版本
g
i
t
r
e
s
e
t
−
h
a
r
d
x
x
x
x
x
x
x
x
表
示
版
本
的
i
d
,
通
过
此
i
d
可
以
恢
复
到
指
定
版
本
git reflog 把所有提交的记录列出来
工作区,版本库
工作区,个人理解就是你所能在电脑的文件浏览界面看到的文件
版本库,肉眼并不得见,它是由git软件所定义的一块存储区域,工作区有的未必在版本库中,反之版本库有的也未必在工作区。
版本库里面还分两块,就像我们有时候在银行一样,有休息区,有排队的。
休息区就是暂存区,他在版本库但是他并没有在排队的信息中。
另外排队的就是真正的git版本。
远端本地命令
在github或者自己搭建的git服务器上新建仓库repository(git页面是可视化界面一看就懂)
$ git remote add origin git@github.com:michaelliao/learngit.git //origin是给远端的命名,取这个就是为了能顾名思义,取其他也行,只要自己方便。用ssh协议可以免去每次都要输入用户和密码登录。
gitpushoriginmaster//在本地做了修改提交
g
i
t
p
u
s
h
o
r
i
g
i
n
m
a
s
t
e
r
/
/
在
本
地
做
了
修
改
提
交
git clone — //复制远端仓库的地址(最好是ssh),即可下载到本地。
分支合并
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
新功能或者修bug
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。
合作(远程分支本地分支)
查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
标签
Git有commit,为什么还要引入tag?
“请把上周一的那个版本打包发布,commit号是6a5819e…”
“一串乱七八糟的数字不好找!”
如果换一个办法:
“请把上周一的那个版本打包发布,版本号是v1.2”
“好的,按照tag v1.2查找commit就行!”
所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag -a -m “blablabla…”可以指定标签信息;
命令git tag可以查看所有标签。
小声哔哔’
以上就是花了总共四小时第二遍在廖雪峰老师的网站上学习的笔记。
前天毕业啦,昨天拍照聚会啦,大学也完事儿了,五月份找工作有点意思。
每天学点东西,写点东西,不靠自觉不行了,没人敦促了。
TIPS:看代码的时候养成不用text看的习惯