0、
整体认识:工作区(用来修改文件的地方),暂存区(add之后存放文件的地方),仓库(commit之后存放文件的地方),远程仓库(push之后所有人都能看到的地方)
gti 常用命令:
————————————————————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————————————
1、
Git就是一个版本控制系统,属于分布式的版本控制系统。与之对应的有集成式的版本控制系统,比如CVS 、SVN等集成式的版本控制系统。集成式的版本管理系统指的是有一个中央的服务器用来存放版本库的,而当我们需要修改的时候,在从中央管理器里面取得最新的版本,修改完之后再把修改的后的版本放到中央股那里其中。集成式的缺点:必须要联网才能工作。分布式的管理系统没有所谓的中央管理器,每个人的电脑里面都有一个完整的版本库,只需要在本地就能工作。缺点:可能造成push冲突。
2、
Git是由Linux系统的创始人开发的一套开源的版本控制系统,用来管理源码和版本的,Git是用C语言编写。
3、安装Git
在Linux上安装:apt install git(Ubuntu),yum install git(红帽)
Windows上安装:在官网下载安装即可。
安装完之后:在命令行执行 git config --global user.name "这里输入你的名字"
git config --global user.email "这里输入你的邮箱"
输入这两个的命令的意思就是你以后需要提交的修改都是以这个身份来提交的,也就是能然我们知道是谁修改了源码。
4、
版本库(repository):又名仓库,就是一个文件夹,不过不是一个普通的文件夹,是一个能被git管理起来的仓库,也就是所你多这个文件家里的所有的修改Git都能够追踪到,这样就能还原我们某个时刻的修改了。
创建一个版本库(本地创建):选择一个空的文件夹,在该文件夹下创建版本库(仓库),使用gti init命令就能创建一个空版本库了。创建完之后就会有一个隐藏的.git文件,该文件就是用来追踪管理版本库的。这是我们就能在该文件夹下添加东西了,但是git只能跟踪文本问价的修改,可以具体的追踪到我们修改了哪一行的哪一个字符,比如txt文件,网页文件,程序的源代码等等。但是像二进制文件,虽然也能管理,但是无法追踪到文件的具体变化,只能知道文件被修改过了,不知道修改了哪里。注意:Microsoft的word文件也是二进制的文件。还有就是Windows自带的记事本会有一些问题,不要使用。
5、
我们写好一个文件之后,一定要将文件放到我们创建的仓库里面,然后使用命令:git add 文件名,这样我们就把我们写的文件告诉加入到仓库了,git就能追踪到仓库文件的变化了。灾后在使用命令:git commit -m "这里写提交文件的说明",这时就把我们修改的文件放入到本地的仓库里面了。为什么add与commit连个命令呢:因为我们每一次可以修改不同的文件,而commit是将你所有的修改都提交到本地的仓库里面去。
6、
git status命令用来查看当前仓库的状态,那些文件被修改了,那些文件被修改还没有提交到仓库的等等。git diff命令可以用来查看具体文件修改了那些地方。
7、
回退版本命令:git reset --hard HEAD^,表示回退到上一个版本(也就是上一个commit的地方)。
使用reflog记录你的每一条指令,使用git reflog查看指令从而查看前面的版本号,就能前进版本了。
回退之后再想回来:git reset --hard 前进的版本号
当我们不断的对文件进行修改提交修改提交。。。一旦我们发现我们将文件修改错了或者是误删了一些文件的时候,这时我们就可以从commit那里恢复,也就是说可以恢复到一个commit的地方,(其实就好比玩游戏存档一样)。我们每一次commit都是一个版本,git都会给我们记录下来放在log里面,所以说当我们修改文件错误或者误删文件等都可以回退到我们前面任意一个commit的地方,使用git log就能查看我们每次commit的log了。在git中使用HEAD表示当前版本,HEAD^表示上一个版本HEAD^^表示上两个版本或者使用HEAD~数字表示回退到这个数字的这个版本。
8、
工作区:就是我们在本地修改文件的地方,也就是我们能看到的文件的地方
版本库(里面的暂存区):也就是在工作区李米娜有一个.git的隐藏目录,他不是一个工作区,而是git的版本库,里面就是有暂存区的,当我们用git add . 命令时git就会把文件暂存到暂存区了,之后我们使用git commit -m ‘ ’ 就会把我们暂存区的所有的内容都放到我们当前的分支里面。一旦我们提交到仓库,只要我们没有对工作区里面的文件进行修改那么暂存区就是干净的。
9、
撤销修改:当我们对文件进行了修改之后,发现我们修改错了,但是我们已经add到暂存区了,这时候我们就需要用到撤销修改了。这里的修改分为两种情况:1 我们的修改还没有放到暂存区,这是我们直接使用撤销就可以了。2 时我们的修改已经了暂存区了,这是我们需要用到git reset HEAD 文件名 ,就可以将暂存区的文件撤销掉。重新放到工作区。总结:使用git checkout 文件名,撤销工作区的修改;使用git reset HEAD 文件名,将暂存区的文件撤销到工作区在用git checkout 文件名撤销;当我们提交到了仓库了就使用版本回退的方法撤销即可。一共三种撤销修改。
10、
远程仓库:
找一个服务器做仓库,其他人都可以从仓库里面获取版本到本地,进行修改后在把修改后的版本同步到服务器上。我们可以在gitee上添加一个远程的仓库,再把它clone到我们本地的机器上就可以。我们使用git clone 仓库的地址,就可以将将仓库clone到我们本地了。修改完成之后在使用git push 将我们修改之后的文件上传到远程仓库就可以了;当我们第二次或者以后需要从远程仓库同步我们的文件到本地时用 git pull 命令进行远程仓库同步到本地即可。
11、
分支管理:就好比分身术一样,同时可以做多个不同的事。比如多个人协同一起开发一个项目,你负责的部分做了一部分,家没有完全做完,这是如果你将你已完成的部分同步到远程仓库,别人再去同步时就会有你上传了但是还没有完成的部分,就可能会导致别人的工作无法进行,所以就有了分支的概念。你可以创建一个属于你的分支,然后你可以将你的工作放到你自己的分支里面,别人时不会区同步你的分支的。当你们的所有的工作都完成的时候,就可以把你们的分支同步到主分支里面就可以了。
12、
创建与合并分支:当我们每次commit的时候,git就会将我们的commit串成一个时间线,这条时间线就是一个分支。一开始默认时主分支,当我们创建了一个分支的时候就会有一个指针指向这个分支,随着我们提交的次数越来越多分支的时间线就越来越长了。比如我们创建了一个master01的分支,这是就有一个指针指向这个分支。当我们完成了工作需要合并的时候,合并完成就可以将master01的分支删除即可。
创建并切换一个分支:git branch 分支的名字,git checkout 分支的名字或者git switch 分支的名字(新版的命令)。
合并并删除一个分支:git merge 需要合并的分支名 ,表示将该分支合并到当前分支。git branch -b 分支名。
13、
解决冲突:当两个分支同时修改了同一个文件的同一个地方,然后亮两个支提交的时候就会发生冲突,这是git就会告诉你那些文件的那些地方发生了冲突,必须要手动的解决冲突才能进行提交。这是我们打开产生冲突的文件查看。和另一个分支的工作者协商解决冲突,看需要删除或者保留亦或者都需要保留修改。
14、
暂存工作状态去别的分支操作:当我们在某个分支下工作的时候,然后需要去修改另外的
主分支的一个文件或者bug时,这时我们可以保存我们分支的进度。再去创建一个新的分支来修改bug,当我们修改完bug的时候仔回到我们工作的分支。使用命令git stash 储藏我们当前的分支的进度,就可以再去其他的分支新建一个分支在进行去改bug等等操作。
15、
当我们在新的分支上进行文件修改的时候,在我们还没有提交该分支的修改的时候,我们不再需要这个分支所作的修改,也就是需要删除这个分支,该分支所做的修改不再需要了,我们使用git branch -D 分支的名字,这样就可以强行删除这个分区了。
16、
当我们使用git clone远程仓库实际上就把本地的master分支和远程的master分支对应起来了也就是此时我们就时master分支。我们可以通过git remote来查看远程仓库的信息,远程仓库的默认名称时origin。当我们push我们的分支的时候我们可以指定本地的分支,这样就可以把我们的分支push到远程的分支上,使用git push origin master,表示以master分支进行push。一般master时主分支要时刻与远程同步,dev时开发分支团队所有人都在上面工作也需要同步,bug分区用来修改bug的,不用时刻同步远程,feature分区的同步取决于团队的发开进度。
17、
标签管理:其实标签和commit差不多,也就是给commit起一个别名。当我们commit一个版本的时候杂合这个版本做个标签(tag),那么这个标签就表示这个版本。当我们需要那个版本的时候直接去相应的标签的地方取出来就行了。
创建标签:使用git tag 标签的名字,这样就给最新提交的commit地位打上了标签。我们也可以找到历史的commit id 然后再打上标签gti tag 标签名字 commit id。
查看标签:git tag,查看标签的信息:git show 标签名字
删除标签:git tag -d 标签名字
push标签到远程:git push origin 标签名字
如果我们已经将标签推送到远程,但是需要删除标签,这时我们需要先将本地的标签删掉,然后再删除远程的,删除远程的d命令:git push origin :/refs/tags/标签名字。
18、
忽略某些文件的push:在我们的工作区的根目录下有一个隐藏的文件夹.gitignore它里面就记录了我们那些文件不需要push,也就是git会自动忽略,gitignore文件里面的文件名的文件。
19、
给命令取别名:git config --global alias.别名 命令。他就表示将该条命令以别名来进行,下次我们就可以使用别名来代替这条命令。