Git目录
- 工作区、暂存区和版本库分别是什么?
- Git常用命令有哪些?
- Git是如何进行分支管理的?
- Git如何查看提交历史?
- 实践出真知!
- 报错
- fatal: pathspec ‘text1.txt’ did not match any files
Git 是一个开源的分布式版本控制系统
工作区、暂存区和版本库分别是什么?
- 工作区:在电脑里能看到的目录
- 暂存区:也叫索引,一般存放在
.git
目录下的 index 文件中 - 版本库:隐藏目录
.git
,是 Git 的版本库。
Git常用命令有哪些?
git add
:添加文件到暂存区。将代码写入到对象库中的一个新对象中,将该对象ID记录到暂存区,并更新目录树git commit
:提交暂存区到版本库。将目录树写入版本库,master分支指向新的目录树git reset HEAD
:版本回退- mixed:为默认值,等同于
git reset
。将文件回退到工作区,此时会保留工作区中的文件,但会丢弃暂存区中的文件; - soft:将文件回退到暂存区,此时会保留工作区和暂存区中的文件;
- hard:将文件回退到修改前,此时会丢弃工作区和暂存区中的文件;
- mixed:为默认值,等同于
git tag -a v1.0
:打个标签其他命令,相对好理解
Git是如何进行分支管理的?
一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
实例:
$ lsREADME$ echo 'runoob.com' > test.txt$ git add .$ git commit -m 'add test.txt'[master 3e92c19] add test.txt 1 file changed, 1 insertion(+) create mode 100644 test.txt$ lsREADME test.txt$ git checkout testingSwitched to branch 'testing'$ lsREADME
解释:在master分支上提交更新,在testing分支看不到,就是我们想要的结果
- 一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。
git merge (branchname)//合并分支git branch -d (branchname)//删除分支
合并冲突:当同一个文件被两个分支都修改过,此时合并报错,需要修改。
Git分支指向的过程描述:参考文章
三个指针:master,dev,HEAD
新创建一个从分支
dev
,master
不动,HEAD
指向dev
,一直保持在提交的最前沿
- 合并后,
master
指向当前dev
,HEAD
指向master
- 当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容。切换分支就是移动HEAD。
Git如何查看提交历史?
git log --oneline //查看提交历史简洁版本
git log --reverse --oneline //逆向查看
git log --author=Linus --oneline -5 //查看Linux用户的操作
git blame README //查看一个文件的全部过程
实践出真知!
尝试了才知道实践的重要性,推荐新建一个文件夹,用git创建一个本地仓库,每步操作后到不同的分支下ls,看看有什么变化。光看理论确实没有动手效果更好。
git init
后不会生成master分支,commit后才有!和菜鸟教程上说的似乎有点出入~- 不论在主分支master还是从分支test创建文件,另一个分支都会做同样的事情
- 谁commit保留谁的文件,删除另一个分支中本次提交的文件。如:在test中commit,test保留此次提交的文件,master中相应文件删除。终于解释了:每个分支代表一条开发线,必须commit!
报错
fatal: pathspec ‘text1.txt’ did not match any files
先更新本地仓库