标签:合并 当前目录 控制系统 而不是 文件的 整理 可见 commit 相同
基础知识
1 GIt 分布式版本控制系统
2 集中式和分布式版本控制系统有什么区别?
集中式版本控制系统:版本库是集中放在中央服务器的;必须有联网才能工作;工作前必须从中央服务器取得最新的版本
分布式版本控制系统:没有“中央服务器”,每个人的电脑都是一个完整的版本库;安全性比集中式要高很多;多人协作时通过一台充当“中央服务器”的电脑来交换大家的修改。
3 什么是版本库?
版本库,也叫仓库,英文叫repository。版本库是一个有很多文件的目录,它被Git管理,能够跟踪每个文件的修改,删除等,方便追踪历史和“还原”。
在某个文件夹中,我们通过命令行执行git init后,当前目录下会生成一个.git的目录,它是隐藏的文件夹。Git通过该目录来跟踪管理版本库。
4 commit
commit可以理解为“保存一个快照”。
Git的commit id 不是1,2,3......递增的数字,而是一个SHA1计算出来的数字,这个数字用十六进制表示。
5 版本
HEAD表示当前版本
HEAD^表示上一个版本
HEAD^^表示上上个版本
HEAD~100表示上第100个版本
6 Git的工作区和暂存区
工作区:电脑中可见的文件夹(目录)
版本库:工作区中的隐藏目录.git
暂存区:存在于版本库中,名字叫stage
执行命令git add filename,它会把工作区文件的修改被放入暂存区。
执行命令git commit -m "xxx",它会把暂存区中的修改提交。
7 master分支和HEAD指针
在某个文件夹中,我们通过命令行执行git init后,当前目录下会生成一个.git的目录。
在版本库中,Git为我们自动创建了第一个分支master,和指向master的HEAD指针。
HEAD指向master,master指向提交。HEAD指向的是当前的分支。
8 分支和HEAD
Git的分支创建非常快!它通过指针实现。Git创建一个分支dev时,Git创建了一个指针dev,指向master相同的提交。
分支:每次提交所形成的的时间线。主分支,也叫master分支。
9 指针
Git内部有个指向当前版本的HEAD指针
Git分支的创建,修改,提交,合并,删除等操作,实质上是对指针的操作。
10 修改
Git 跟踪并管理的是修改,而不是文件
11 远程仓库
本地仓库,本地仓库和远程仓库关联,克隆远程仓库
12 Git用符号<<<<<<<
,=======
,>>>>>>>标记出不同分支的内容。
一般地,<<<<<<< 是当前分支的内容,>>>>>>>是分支的内容,=======用来分隔两个分支的冲突的内容
13 分支的合并
fast-forward模式的git merge:删除分支后,它会丢掉分支信息(丢失提交历史)
--no-ff方式的git merge(两个分支分别有新的提交):先手动解决冲突,再提交;它会生成一个新的commit(提交历史会存在)
14 克隆远程仓库
Git自动把本地的master分支和远程的master分支对应起来了,远程仓库的默认名称是origin。
推送分支:把该分支上的所有本地提交推送到远程仓库。
本地分支和远程分支的链接关系:--set-upstream-to
15 rebase变基
rebase操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观。
缺点是本地的分叉提交已经被修改过了。
16 标签
版本库的一个快照。本质是指向某个commit的指针,它跟某个commit绑定在在一起。
17 .gitignore文件
在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
.gitignore文件本身要放到版本库里,并且可以对.gitignore文件做版本管理
参考资料:
https://git-scm.com/book/zh/v2
https://www.liaoxuefeng.com/wiki/896043488029600
标签:合并 当前目录 控制系统 而不是 文件的 整理 可见 commit 相同
原文地址:https://www.cnblogs.com/mrray1105/p/11361171.html