-
当我们第一次将文件放到暂存区里,可能会有放早了的情况,我们可以使用
git rm --cached a.html
的方式将文件从暂存区里面取出。 -
当我们是第二次提交,也就是说仓库里其实已经有了这个文件了,我们从暂存区里取出的代码就要使用
git reset HEAD a.html
的方式取出 -
如果我们要回退前一个版本,可以使用
git checkout -- a,.html
的方式,就会回退当上一个版本
其实这些操作在我们查看状态的时候都会有提示代码的,如下:
alias命令别名提高工作效率
在现实开发中,像git add
,git status
,git commit
,git log
等等这些git操作我们要使用非常非常多次,如果我们想要提高效率,就可以设置一些别名来进行操作,使用的就是alias命令,在git的config配置文件下进行配置如:
-
设置全局命令:
git config --global alias.s status
这个的意思就是s代替的status,所以我们只要输入git s
效果和git status
的效果是一样的 -
如果只想某个项目里面设置这种alias快捷指令,只需要cd到那个项目里,单独修改那个项目的config配置文件即可,如:
git config alias.l log
-
也可以通过编译器打开这个文件夹,手动进行输入
分支的理解
如上图,git默认是有一个master主分支,分支的出现也能够让我们的团队能够并行开发,大大提高开发的效率我们项目完成之后上线的也是主分支里面的内容,一些其他的新开发的功能我们会选择新建一个分支来进行开发,这样做的一个好处是能够让master也就是最终发布的项目的分支保持干净的状态,也能够更加体现协同开发,代码的耦合地也大大的降低了。
其他分支完成了功能或者修复了Bug之后只需要将完成的代码合并到主分支即可。
分支branch的基本操作
在我们设置分支之前,必须是先提交一次代码,因为只有提交了一次之后仓库才会默认的有一个master主分支,只有在有主分支的情况下才可以创建其他的分支
-
使用
git branch 分支名
创建一个分支,git checkout 分支名
切换分支,在切换了分支之后写的代码如果没有合并到master分支就切回master分支的时候是看不到的,可以理解为回到master分支的那个时间节点的时候分支还没有创建。 -
我们可以使用
git checkout -b 分支名
快捷的创建一个分支,并切换到该分支。
分支操作使用的非常的频繁,一定要理解,多看前面的那个图,在分支的代码完成之后一定要记得合并到master主分支。
分支的其他操作(合并分支、删除分支)
前面一个知识点说了,分支在没有合并到主分支的时候,主分支是看不到其他分支上修改或者新创建的文件的。所以我们就需要合并分支,当分支功能已经合并,分支也就没有存在的必要了,这时候就可以删除掉分支
-
合并分支,首先是要切换到master主分支(这个不能忘),然后使用
git merge 分支名
就可以实现合并分支,合并分支的速度非常快,本质上其实就是将最后一次提交的指针指向master即可,所以非常的快 -
删除分支,使用
git branch -d 分支名
实现删除一个分支,这里的-d 就可以理解成是delete的意思。
正确的处理分支冲突
分支冲突基本是只要使用了分支不出意外一般都会发生冲突,因为是多个分支操作了同一个文件,在最终合并的时候系统不知道要按照哪个来进行合并,这个就是分支冲突
所以在发生冲突的时候我们要先进入冲突的文件,对冲突的文件进行操作一下,就可以解决冲突了
如果两个都想要保留 只要删除那些箭头和等号即可,如果只想要某个,删除掉另外部分即可,他很明确的标出了两个分支都这个文件的修改 用了等号隔开。
–merged --no-merged以及强制删除分支
前面学习了查看分支我们可以使用git branch
,下面学习通过一些特殊的指令查看已合并的分支和未合并的分支
-
git branch --merged
查看已经合并的分支,注意:新创建的赶紧分支也是属于这个已合并的分支,因为新分支的内容和主分支是完全一致的,一旦新分支文件发生改变,就不属于已合并的分支了。 -
git branch --no-merged
查看当前未合并的分支。
查看这些已合并未合并的意义是为了能够让我们更好的删除分支,理论上,分支只要合并了,就没有存在的必要了,我们就可以使用git branch -d 分支名
进行删除了,但是这个指令只能够删除那些已合并的分支,未合并的分支需要使用git branch -D 分支名
来进行删除
git branch -D 分支名
是一个非常危险的一个操作,所以使用的时候一定要谨慎谨慎再谨慎,否则会造成前功尽弃的可能。