一、学习资料参考:
1. 码云帮助中心:https://gitee.com/help/articles/4107
2. Git教程(廖雪峰): https://www.liaoxuefeng.com/wiki/896043488029600
二、笔记记录
1、
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
2、
3、
4、
暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么。
5、
理解Git是如何跟踪修改的,每次修改,如果不用git add到暂存区,那就不会加入到commit中。
6、
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。
7、
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
8、
“有了远程仓库,妈妈再也不用担心我的硬盘了。”
9、
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!所以使用分布式版本系统当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
10、
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
Git支持多种协议,包括https,但ssh协议速度最快。
11、
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
12、
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
用git log --graph命令可以看到分支合并图。
13、
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
小结
Git分支十分强大,在团队开发中应该充分应用。
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
14、
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick
15、
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D
16、
多人协作的工作模式通常是这样:
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小结
17、
18、
19、
20、
21、使用Gitee
https://www.liaoxuefeng.com/wiki/896043488029600/1163625339727712
22、
23、
给Git配置好别名,就可以输入命令时偷个懒。我们鼓励偷懒。
24、
使用SourceTree可以以图形界面操作Git,省去了敲命令的过程,对于常用的提交、分支、推送等操作来说非常方便。
SourceTree使用Git命令执行操作,出错时,仍然需要阅读Git命令返回的错误信息。
26、Git Cheat Sheet(git 常用命令小抄)
https://gitee.com/liaoxuefeng/learn-java/raw/master/teach/git-cheatsheet.pdf