分布式版本控制系统,控制系统
分布式版本控制系统,控制系统
分布式版本控制系统——gitgit可以快速高效的处理小型和大型项目的所有事务;对于版本的控制,git可以很从容的应对;
Base源中有Git,所有可以直接用git安装;
git是在工作区中工作的,所以需要我们创建对应目录,git在目录中工作;
git的配置文件分为三类:
系统级:/etc/git/config
对所有的git仓库都生效;与用户无关;
全局级:~/.gitconfig
对此用户所管理的git仓库都生效;
库级:~/.git/config
仅对当前git仓库生效;
无论是什么级别的配置文件,必须配置的参数有:(git对信息来源有要求)
user.name
user.email
git的对象类型:
blob:等效于文件;
tree:等效于目录;
commit:对tree对象在一起而提交;
tag:对另一个对象的引用;
git的三种状态:
已提交:commited,已经保存到本地对象数据库中;
已修改:modified,在工作区中修改了文件,但没有保存到数据库中;
已暂存:staged,仅仅对已经修改的文件进行标记;
git中文件的分类:
已追踪:tracked,在版本库中,用git add命令添加至索引的文件;
未追踪:只是在版本库中新建文件,并为用git命令进行任何操作;
已忽略:ignored,通过文件忽略列表声明被忽略的文件;
注意:git不会对未追踪的文件进行任何操作,只能处理已追踪的文件;
git中几个常用的命令:
git init [--bare]
用于对版本仓库进行初始化,或者创建一个空的版本库;
[root@slave1~]#mkdir-pvgittest
mkdir:已创建目录"gittest"
[root@slave1~]#cdgittest
[root@slave1gittest]#gitinit
初始化空的Git版本库于/root/gittest/.git/
[root@slave1gittest]#tree.git/
.git/
├──branches
├──config
├──description
├──HEAD
├──hooks
│├──applypatch-msg.sample
│├──commit-msg.sample
│├──post-update.sample
│├──pre-applypatch.sample
│├──pre-commit.sample
│├──prepare-commit-msg.sample
│├──pre-push.sample
│├──pre-rebase.sample
│└──update.sample
├──info
│└──exclude
├──objects
│├──info
│└──pack
└──refs
├──heads
└──tags
9directories,13filesgitconfig
git config [--system] [--global]
配置文件中的信息;
[root@slave1gittest]#gitconfiguser.name"ljy"
[root@slave1gittest]#gitconfiguser.email"ljy@123.com"
git add
将未被追踪的文件添加至暂存区;
[root@slave1gittest]#echo123>testgit.txt
[root@slave1gittest]#
[root@slave1gittest]#gitaddtestgit.txt
git commit [-m “message”]
将暂存区的文件提交到工作区;
[root@slave1gittest]#gitcommit-m"v1.0"
[master(根提交)6a4d95c]v1.0
1filechanged,1insertion(+)
createmode100644testgit.txt
[root@slave1gittest]#tree.git/
.git/
├──branches
├──COMMIT_EDITMSG
├──config
├──description
├──HEAD
├──hooks
│├──applypatch-msg.sample
│├──commit-msg.sample
│├──post-update.sample
│├──pre-applypatch.sample
│├──pre-commit.sample
│├──prepare-commit-msg.sample
│├──pre-push.sample
│├──pre-rebase.sample
│└──update.sample
├──index
├──info
│└──exclude
├──logs
│├──HEAD
│└──refs
│└──heads
│└──master
├──objects
│├──19
││└──0a18037c64c43e6b11489df4bf0b9eb6d2c9bf
│├──46
││└──a8ca82107ff110975175732f18c351d5eecd01
│├──6a
││└──4d95c1c6980bd0a5a121696b301cb6bfd9d10c
│├──info
│└──pack
└──refs
├──heads
│└──master
└──tags
15directories,21files
git status
显示暂存区中的索引状态;
git ls-files [-s] [-o]
显示暂存区和工作区中的而文件的信息;
[root@slave1gittest]#gitls-files-s
100644190a18037c64c43e6b11489df4bf0b9eb6d2c9bf0testgit.txt
git cat-file [-t] [-s]
显示仓库中对象的内容,类型及大小等信息;
[root@slave1gittest]#gitcat-file-t190a
blob
[root@slave1gittest]#gitcat-file-t46a8
tree
[root@slave1gittest]#gitcat-file-t6a4d
commit
git mv
移动或者重命名一个工作区或暂存区中的文件;
git rm
在工作区和暂存区同时删除文件,--cached将暂存区中被追踪的文件变为未被追踪的状态;
git log
显示git的日志信息;
[root@slave1gittest]#gitlog
commit6a4d95c1c6980bd0a5a121696b301cb6bfd9d10c
Author:ljy
Date:TueDec419:33:082018+0800
v1.0
对象的对应关系:
image.png
git diff [--color]
比较任意的两次提交之间的差别比较:
[root@slave1gittest]#gitlog
commitde40c12e931f0796a975185873eac2829e1b896b
Author:ljy
Date:TueDec420:19:252018+0800
v1.1
commit6a4d95c1c6980bd0a5a121696b301cb6bfd9d10c
Author:ljy
Date:TueDec419:33:082018+0800
v1.0
[root@slave1gittest]#gitdiff6a4dde40--color
diff--gita/789.txtb/789.txt
newfilemode100644
index0000000..285ff73
---/dev/null
+++b/789.txt
@@-0,0+1@@
+7890
diff--gita/testgit.txtb/testgit.txt
index190a180..ce8c77d100644
---a/testgit.txt
+++b/testgit.txt
@@-1+1,2@@
123
+456
git reset { [--soft] | [--mixed] | [--hard] }
撤销提交;将HEAD指向某个指定的提交状态;
[root@slave1gittest]#gitlog
commitde40c12e931f0796a975185873eac2829e1b896b
Author:ljy
Date:TueDec420:19:252018+0800
v1.1
commit6a4d95c1c6980bd0a5a121696b301cb6bfd9d10c
Author:ljy
Date:TueDec419:33:082018+0800
v1.0
[root@slave1gittest]#gitreset--mixed6a4d
重置后撤出暂存区的变更:
Mtestgit.txt
[root@slave1gittest]#gitstatus
#位于分支master
#尚未暂存以备提交的变更:
#(使用"gitadd..."更新要提交的内容)
#(使用"gitcheckout--..."丢弃工作区的改动)
#
#修改:testgit.txt
#
#未跟踪的文件:
#(使用"gitadd..."以包含要提交的内容)
#
#789.txt
修改尚未加入提交(使用"gitadd"和/或"gitcommit-a")
[root@slave1gittest]#gitlog
commit6a4d95c1c6980bd0a5a121696b301cb6bfd9d10c
Author:ljy
Date:TueDec419:33:082018+0800
v1.0
[root@slave1gittest]#gitadd789.txt
[root@slave1gittest]#gitcommit-m"v1.1"
[master7c7a8e3]v1.1
1filechanged,1insertion(+)
createmode100644789.txt
评论暂时关闭