【Git入门】01-Git基础操作

目录

1.安装

1.1下载

1.2初始配置

2.基础操作

2.1创建版本库

2.2首次提交

2.3查看状态

2.4提交修改

2.5显示记录

2.6版本回退

3.版本库

3.1撤销工作区的修改

3.2撤销暂存区的修改

3.3删除版本库的文件

4.远程版本库

4.1克隆版本库

5.管理分支

5.1查看分支

5.2创建分支

5.3修改分支

5.4合并分支

5.5删除分支

5.6解决分支冲突

5.7分支管理策略

5.8储存当前工作区

6.标签

6.1创建标签

6.2添加标签说明

6.3删除标签

7.忽略


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 commitgit 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/

2.《Git学习指南》[德]RenéPrei·el普莱贝尔Bj·rn ... 著,凌杰姜楠 译

3.《GitHub入门和实践》[日] 大塚弘记 著,支鹏浩刘斌 译

猜你喜欢

转载自blog.csdn.net/Neocst/article/details/81276477