1、Git 是一个分布式版本控制系统,保存的是一系列文件快照。文件流转的三个工作区域:Git的工作目录,暂存区域以及本地仓库。文件的三个状态: 已修改,已暂存,已提交
实际操作:
在已有ssh情况下,新建仓库和配置
ssh-keygin -t rsa -C "邮箱"
在github上新建仓库,关联到远程仓库
mkdir test
cd test
git init
//添加远程库
git remote add origin 仓库地址
//origin就是远程库的名字,这个是git 默认的叫法,也可以改成别的。但是origin这个名字一看就知道是远程库
git touch README.md
git add .
git commit -m "提交readme.md"
git pull origin master
git push origin master
提交到暂存区
add 作用:用于跟踪未跟踪的文件;暂存文件;
提交到当前分支
commit作用:提交更新
丢弃工作区的修改文件
git checkout -- filename
撤销暂存区的修改文件
git reset HEAD fielname
回退上次版本
git reset --hard HEAD ^
回退到某一个版本
git reset --hard HEAD 版本号
注:Git中,用HEAD表示当前版本,HEAD^上一个版本
基本的Git工作流程如下:
1、对工作目录中修改某些文件。
2、对修改后的文件进行快照,然后保存到暂存区域。
3、提交更新,将保存的暂存区域文件永久转存到Git目录中。
分支
commit(提交)对象:包含指向暂存内容快照的指针;包含本次提交作者的相关信息等;包含零个或者多个指向该对象的父对象指针;
tree对象:包含工作目录树内容及包含其中各个文件对应的blob对象索引。
blob对象:包含文件快照内容。
HEAD指针: 指向当前所在分支,其实是当前分支的别名。
分支的合并: merge
1.第一种情况
git checkout develop
git checkout -b hotfix
git add -A
git comit -m "xxx"
git checkout develop
git merge hotfix
请注意,合并时出现了“Fast forward”的提示
因为此时master分支的提交对象是将要并入hotfix分支的直接上游,git只是将指针右移。这样的过程叫做“快进”。
2.第二种情况
请注意,这次的合并是从更早的地方开始分叉的。所以git会以两个分支末端以及他们共同的祖先进行一次简单的三方合并计算生成一个文件快照,并创建一个指向它的提交对象。
值得一提的是 Git 可以自己裁决哪个共同祖先才是最佳合并基础。
遇到冲突,解决冲突,重新提交。
长期分支:
特性分支:一个特性分支是指一个短期的,用来实现单一特性或与其相关工作的分支
远程分支:对远程仓库中的分支的索引。它们是一些无法移动的本地分支;只有在 Git 进行网络交互时才会更新。
跟踪分支:从远程分支 checkout 出来的本地分支
分支的衍合
把C3里面的补丁在C4的基础上打一遍。
git co experiment
git rebase master
此时master分支落后了,需要快进合并一次
git co master
git merge experiment
git fetch 和git pull
git fetch origin 来同步远程服务器上的数据到本地。从origin找到服务器,然后从上面获取你没尚未更新的数据,更新到本地,然后移动origin/master到最新位置
git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。
配置别名
git config --global alais.co checkout