本作者和穆雪峰的教程学到了很多实践,也截图了学习的过程,初学者可以把这个当成一些简单易上手的git使用教程,跟着我这些步骤学完这些内容,你对git掌握的也有一半以上了!各位童鞋加油!
001安装完成第一步命令输入姓名和邮箱.png
01创建空仓库.png
02用init把目录变成git可管理的仓库.png
03在leaengit子目录下创建readme文档,并编辑字符.png
04告诉git把文件添加到仓库.png
05告诉git把文件提交到仓库.png
06第一章小结.png
07更改readme内容并保存.png
08运行 git status查看结果,结果被修改了,但没提交修改.png
09如果离开久了,忘了上次怎么修改readme文档的可以输入git diff 命令查看.png
10第一次修改readme文档提交修改.png
11执行第一次修改git commit提交到仓库之前先输入git status查看当前仓库状态以便放心.png
12第一次修改后用git commit提交到仓库.png
13提交第一次修改后输入git status查看当前仓库状态,结果是没有需要提交修改的,干净的.png
14小结.png
15第二次修改的readme文档内容.png
16第二次修改并git add提交,然后查看仓库,以便放心提交,然后用git commit提交.png
17用git log命令来查看每一次版本修改的内容和修改了什么。.png
18学会用git reset --hard HEAD来把当前GPL版本退回到上一个版本add distributed.png
19 用cat+文件名来查看当前内容版本.png
20可以继续退回上一个版本wrote a readme file 在退回之前先用git log来查看现在版本状态,最新版本已经看不到GPL版本了.png
21想把版本回到未来的话,当命令窗口还没被关闭时候,可以往上面查找,找append GPL的commit id是什么2507ec9便是id.png
22用git reset --hard+版本id来回到未来最新的GPL版本.png
23然后用cat +文档名来查看当前版本号,发现回到了未来的GPL版本.png
24如果关闭了命令窗口的话,可以用git reflog来查看命令历史版本,就可以查看到版本号,也可以回到过去或者进入未来.png
25小结.png
26第三次修改readme内容.png
27第三次修改后在learngit工作区创建一个以LICENSE命名的文本文件.png
28,然后用git add分别提交两个文本文档,然后查看结果.png
29用commit -m “修改记录”格式把add提交的暂存区两个文本文档一起提交到分支.png
30,提交后就可以用git status来查看工作区是不是干净的,正常情况提交后是干净的.png
31小结.png
31小结附图1.png
31小结附图2.png
31小结附图3.png
32管理与修改,第四次修改readme.png
33第四次修改并添加,和查看.png
34第五次修改readme.png
35提交.png
36提交后用git status查看状态,发现第二次并没有提交.png
37用git diff HEAD -- readme.txt这个命令来查看工作区和版本库的最新区别,可以发现第二次修改确实是没提交.png
38小结.png
39知识点图片.png
40如果哪天不小心加进去了,但是发现加错了,可以纠正的.png
41用git add提交了这个犯错的句子.png
42如果想更改的话,先用git status查看一下状态.png
43然后键入命令git checkout -- readme.txt可以把readm.txt在工作区的修改可以撤销.png
44用cat +文件名查看一下是否复原撤销掉错误的句子.png
45如果你提交了那个错误的句子,在commit提交之前,用git status查看一下当前状态.png
46用命令git reset HEAD+文件名,公式也可以撤销修改重回工作区,可以用HEAD从暂存区退回到工作区.png
47然后在用git status查看当前暂存区状态,可以看到是干净的,没有提交到暂存区。.png
48然后一样使用git checkout -- +文件名,公式来撤回工作区的修改.png
49最后用git status查看,结果终于清静了,干净啦。.png
50小结.png
51工作区新建文档test.txt为名.png
52学会删除文件,首先在工作区新建一个文本文档然后用git add添加,并用git commit提交.png
53删除文档的格式rm+文件名,或者自己去工作区手动删除文档也可以.png
54用rm+文件名公式删除工作区的文档后,可以用git status查看工作区状态,就可以显示删除了什么文件。.png
55用git rm+文件名可以删除版本库中该文件。.png
56然后用commit提交删除的文件.png
57如果是误删的话可以用git checkout -- +文件名来从版本库中恢复.png
58小结.png
59windows平台创建远程仓库.ssh文件.png
60创建.ssh成功后如下图.png
61.1.2.png
61.1.png
61gitHUB官网申请新的ssh密匙步骤.png
62远程仓库小结.png
63创建git远程仓库并同步到本地的仓库.png
64新建成的git仓库是空的.png
65本地learngit仓库下右键菜单点击启动GIt bash Here命令.png
66用git remote add origin git@gitHub.com:git的用户名/learngit.git用这个命令把本地仓库推送到github仓库.png
67用git push -u origin master命令把仓库推送到远程库上.png
68推送成功后就可以看到远程仓库和本地仓库是一样的.png
69添加远程仓库小结.png
70从远程克隆.png
71成功后会看到readme.md新仓库.png
72用git clone git@github.com:github的用户名/gitskills.git命令把远程仓库克隆到本地仓库.png
73从远程克隆到本地成功后,你会看到下列目录里有这样的文件,代表成功了.png
74远程克隆到本地的小结.png
75创建dev分支并切换到dev分支.png
76用git branch命令查看当前分支.png
77打开learngit文件下的readme.txt修改并加上一行.png
78然后进行提交操作.png
79dev分支工作完成后,git checkout master切换回master分支.png
80返回master查看readme.txt文件发现并没有原来添加的那一行,因为提交在dev分支上,master分支并没有变.png
81用git merge dev 把dev分支的工作成果合并到master分之上,注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都Fast-forward。.png
82合并后,打开readme.txt查看,那一行内容已经合并了.png
83合并完成后就可以用git branch -d dev命令删除dev分支了.png
84然后用git branch查看只剩下master分支了,当前分号会用“乘的运算符号”来表示.png
85创建合并分支小结.png
86,合并不是一帆风顺的,用git checkout -b feature1命令创建新的分支开发.png
87修改readme.txt最后一行.png
88然后在feature1分支上提交.png
89,用git checkout master切换到master分支,Git还会自动提示我们当前master分支比远程的master分支要超前1个提交.png
90然后再master分支下修改readme.txt文件.png
91然后提交.png
92现在master分支和feature1分支都各自分别有新的提交,就变成了这样的.png
93这种情况下合并,会有冲突.png
94 用git status来查看一下分支情况,发现确实是冲突了,必须自己手动解决.png
95打开readme.txt查看,会发现有这三个符号分别标记出不同分支的内容.png
96然后修改一下内容.png
97.1现在,master分支和feature1分支变成了下图所示:.png
97再次提交.png
98也可以用git log --graph --pretty=oneline --abbrev-commit,以git log命令来查看分支合并情况.png
99然后用git branch -d feature1来删除feature1分支.png
100解决冲突小结.png
101用git checkout -b dev创建并且换分支.png
102修改readme.txt文档.png
103,把修改好的readme文件提交到dev分支.png
104然后用git checkout master切换回master分支.png
105用git merge --no-ff -m merge with no-ff dev命令合并dev分支,注意--no-ff参数表示禁用fast forward.png
106用git log --graph --pretty=oneline --abbrev-commit命令查看历史分支.png
107可以看到不使用 Fast forward模式.png
108分支策略与小结.png
109修改readme.txt文件.png
110然后创建dev分支.png
111然后上传到dev分支readme文件.png
112查看当前文档,并没有提交readme文档.png
113并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需要时间。但是,必须在两个小时内修复该bug,那就使用git stash可以把工作现场存储起来.png
114首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支.png
115在master下创建临时分支issue-101.png
116然后修改readme文档.png
117把readme上传并提交.png
118修复完成bug后切换到master分支.png
119然后用git merge --no-ff -m "merged bug fix 101" issue-101命令来完成合并.png
120最后用git branch -d issue-101,删除issue-101分支.png
121然后用git checkout dev回到dev分支继续干活.png
122用用git stash list命令就可以看到当初的dev工作现场内容.png
123用git stash apply恢复,但是恢复后,stash内容并不删除.png
124用git stash drop来删除stash内容,还有一种方式是git stash pop这个可以恢复的同时也可以删除stash内容.png
125再用git stash list查看,就看不到任何stash内容了.png
126你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:git stash apply stash@{0}.png
127bug分支小结.png
128添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。现在,你终于接到了一个新任务:开发代号为Vulcan的新功能,该功能计划用于下一代星际飞船。.png
129开发完毕后提交并查看.png
130回到dev并进行合并.png
131如果不想开发了,就必须就地销毁这个分支.png
132销毁失败。Git友情提醒,feature-vulcan分支还没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用命令git branch -D feature-vulcan.png
133Feature分支小结.png
134当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。要查看远程库的信息,用git remote.png
135或者,用git remote -v显示更详细的信息.png
136提示.png
137推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上.png
138如果要推送其他分支,比如dev,改成git push origin dev.png
139提示.png
140抓取分支,多人协作时,大家都会往master和dev分支上推送各自的修改,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆.png
141当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支。不信可以用git branch命令看看.png
142你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支.png
143他就可以在dev上继续修改,然后,时不时地把dev分支push到远程.png
144你的小伙伴已经向origin分隔符dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送用以下命令.png
145推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin分隔符dev抓下来,然后,在本地合并,解决冲突,再推送.png
146git pull也失败了,原因是没有指定本地dev分支与远程origin分隔符dev分支的链接,根据提示,设置dev和origin分隔符dev的链接.png
147再pull.png
148这回git pull成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push.png
149多人协作小结.png
150标签管理.png
151创建标签之前先切换到打标签的分支上.png
152然后用 git checko master切换到master分支.png
153敲命令git tag +name就可以打一个新标签.png
154可以用git tag查看所有标签.png
155默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,用git log --pretty=oneline --abbrev-commit命令来查看历史版本.png
156比方说要对add merge这次提交打标签,它对应的commit id是 2507ec9,敲入命令git tag v0.9 2507ec9.png
157然后可以用git tag查看标签.png
158注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show +tagname查看标签信息,输入命令git show v1.0,可以看到,v1.0确实打在kkk999这次提交上.png
159还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字,命令是git tag -a v1.3 -m "wrote a readme file" 066f214.png
160还可以通过-s用私钥签名一个标签.png
161签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错,如果报错,请参考GnuPG帮助文档配置Key.png
162用命令git show +tagname可以看到PGP签名信息.png
163创建标签小结.png
164如果打错了标签,未推送到远程,可以本地删除,用命令git tag -d v1.3.png
165如果要推送某个标签到远程,使用命令git push origin +tagname.png
166一次性推送全部尚未推送到远程的本地标签,用命令git push origin --tags.png
167如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除,用git tag -d v1.3命令.png
168然后,从远程删除。删除命令也是push,用git push origin refs分隔符tags分隔符v1.3.png
169操作标签小结.png
170使用Git hub.png
171用git config --global color.ui true命令可以给git适当地显示不同的颜色比如git status命令.png
172忽略特殊文件.png
173假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini文件,因此你需要忽略Windows自动生成的垃圾文件.png
174然后,继续忽略Python编译产生的.pyc、.pyo、dist等文件或目录.png
175加上你自己定义的文件,最终得到一个完整的.gitignore文件,内容如下.png
176最后一步提交.png
177如果你确实想添加该文件,可以用-f强制添加到Git:.png
178或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查,Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。.png
179忽略特殊文件小结.png
180设置别名命令为git config --global alias.缩写+全拼.png
181设置git st别名后使用效果和git status效果是一样的.png
182很多命令都可以简写.png
183为撤销修改设置别名的方法.png
184为git last设置最近一次提交信息.png
185简单地说一下设置别名的格式如下alias.+要设置的功能全拼+单引号设置别名单引号.png
186配置文件存放位置查看.png
186配置文件存放位置查看与删除别名,别名就在alias后面,对应删除就可以了+小结.png
尊重原作者,向原作者致敬,还有对我写的入门初学知识看不懂的,可以看看穆雪峰官网的教程链接如下:
git应用学习穆雪峰官网教程
加油学习吧!骚年们认真努力学完这些,对你以后开发会有很大的帮助的!