目录
1.安装
1.1下载
下载地址:
https://git-scm.com/download/win
使用默认安装配置,目前只另选编辑器为Notepad++
1.2初始配置
双击打开,配置用户名和EMAIL
2.基础操作
2.1创建版本库
在版本文件的存放目录下操作。
先进入到该目录:
cd /f/10_Git/00_Projects/Git_first_test
git init
2.2首次提交
需要两步:
(1)先用add命令来确认提交时,需要包含哪些文件;
(2)用commit命令来将修改提交到版本库中。
git commit --message "Git Test:the first example"
注意:写明概述。
2.3查看状态
在没有任何修改时,使用查看指令,会显现“nothing to commit”
git status
在文件进行了修改,使用查看指令,会有如下显示:
2.4提交修改
先使用add将修改添加到下一次提交。
此时,可以查看状态。
然后,提交。
git commit –message “add some comment”
2.5显示记录
git log
2.6版本回退
先查看提交历史
git log
或者显示更为简洁:
git log –pretty=oneline
此时,文件的内容为:
回退到上一个版本:
git reset –hard HEAD^
注:
(1)HEAD代表当前版本,HEAD^代表上一版本,HEAD^^代表上上个版本,HEAD~100代表往上100个版本;
那么,问题来了,不可能自己去数个数吧???
答:可以写版本号:
git reset –hard 358f #可以不用写全,GIT会判断
此时,可以在工作区看见,文件的日期自动变更了。
再次打开文件,可以看见文件中也修改了。
此时,查看状态:
那么,怎样再回去呢?必须知道,那一次提交的commit id才行:
git reset –hard 4c52
可以看见回来了。
通过一下指令,可以知道每次提交的commit id:
git reflog
所有的提交,GIT都保存了,上述操作GIT只是更改了当前指针,并更新了工作区。
3.版本库
工作区、暂存区、版本库的概念:
工作区:当前本地目录(文件夹);
暂存区:ADD后文件所处,待提交;
版本库:提交后的内容存放的地方。
注意,每一次修改都要ADD,或者,COMMIT只会提交已添加到暂存区的修改。
工作区修改了,但没有ADD,查看变更。如果没有任何修改,不会有任何显示。
git diff HEAD – wxpython_test.py
ADD到暂存区,查看变更时一样的。
说明,git diff查看的是工作区和版本库之间的差异。
3.1撤销工作区的修改
git checkout – wxpython_text.py
这条指令适用于两种情况:
(1)工作区修改了,但还没有添加到暂存区。执行该指令,则撤销工作区的修改,工作区与版本库一致;
(2)已添加到了暂存区,但又做了修改。执行该指令,则撤销工作区的修改,回到ADD到暂存区时的状态。
即,回到上一次的git commit或git add的状态。
3.2撤销暂存区的修改
如果修改已经添加到了暂存区。那么,使用git reset指令:
git reset HEAD wxpython_test.py #保持与版本库一致,即撤销暂存区的修改
git log
3.3删除版本库的文件
git rm test.py
git commit -m “remove test.py”
千万别忘了提交。
如果只是本地删除了,要恢复,直接回到版本库版本即可。
git checkout -- test.py
只要本地没提交,本地删除就无所谓了。
4.远程版本库
4.1克隆版本库
(1)克隆本地的版本库
git clone /f/10_Git/00_Projects/Git_first_test /f/10_Git/00_Projects/Git_first_test_CLONE
原版本库和新版本库。
(2)克隆远程版本库
git clone git@github.com:michaelliao/gitskills.git
GIT默认使用SSH协议。
5.管理分支
注:本文部分图片引用至https://www.liaoxuefeng.com/wiki/
开发新功能的时候,非常使用于分支的概念。在开发完成后,在合并到主分支。
HEAD是指向当前分支的。在GIT中总是唯一存在着一个激活的分支。
5.1查看分支
查看当前所有的分支:
git branch
可以看见,目前只存在一个分支。*表示当前激活的分支。提交,只会指向当前分支。
5.2创建分支
创建一个新分支,并切换到当前:
git checkout -b New_Branch
注:-b代表创建并切换;
分开执行的命令为
git branch New_Branch #常见一个新分支
git checkout New_Branch #切换到New_Branch这个分支
再查看当前分支:
5.3修改分支
分支,还是基于同一版本,不同分支拥有同一个工作区。只是Git帮你把修改按分支进行记录。
在分支中增加一个修改后,查看修改:
提交后查看LOG:
5.4合并分支
先切换回主分支:
git checkout master
此时,在工作区查看,之前在New_Brach分支做的修改不在了。
接下来,将New_Brach分支合并到主分支,切记:要在先切换到主分支,在主分支下操作。
git merge New_Branch
(2)不适用Fast-forward方式
默认为Fast-forward方式,在这种情况下,删除分支后,会丢掉分支信息。
git merge –no—off NewBranch
注:--on—ff 表示禁用Fast-forward方式。
5.5删除分支
合并完成后,删除掉分支:
git branch -d New_Branch
删除没有合并的分支:
git branch -D New_Branch
5.6解决分支冲突
当Master和分支都有新的提交的时候,此时无法快速合并,会产生冲突。
???没太懂,冲突后怎么操作
git log –graph --oneline
5.7分支管理策略
基本原则制定:
(1)MASTER分支为稳定版本,用于发布,一般不在上面进行修改。
可以为每个BUG新建一个分支,验证完成后再删除。
5.8储存当前工作区
当前的工作还未完成,而且并未提交。但有了新需求,比如:需要临时更改一个BUG。
此时可以看到有更改并未提交:
(1)储存
这个可以使用如下指令:
git stash
此时可以看到,工作区和暂存区都是干净的。
然后,在新建分支,进行临时工作,再完成后,再回到原来的分支。
git checkout New_Branch
git stash list #查看STASH
(2)恢复
这里有两个方法,但有一些不同:
git stash apply
这种方法,恢复后,STASH中的内容不会被删除。如果需要删除,需使用指令:
git stash drop
另一种方式,则恢复后,同时删除掉了STASH中的内容。
git stash pop
(3)多次储存
可以多次STASH,然后通过git stash list查看,恢复时制定相应的STASH即可。
git stash apply stash@{0}
6.标签
6.1创建标签
创建标签前,先切换到需要打标签的分支上。
git tag Version1.0 #给当前分支设置Tag:Version1.0
给制定的提交,打标签:
git tag Version1.1 52c6 #Commit ID根据git log查看
查看所有的标签:
git tag
6.2添加标签说明
git tag -a Version1.2 -m “Capture Data Version”
6.3删除标签
git tag -d Version1.0
7.忽略
有时候需要把一些不需要提交的文件放在工作区。例如:某些工程配置文件。那么,在工作区的根目录下创建一个“.gitignore”文件,然后把需要的文件名填进去。
疑问汇总:
1.如果本地工作区路径和文件夹名变更了,GIT会如何处理?
Reference:
1.https://www.liaoxuefeng.com/