1.git简介
Git是目前世界上最先进的分布式版本控制系统
当你需要做一个大工程的时候,文件的管理无疑是非常庞大的工作,因为你需要不断的修改更新文件内容,同时可能还要保留旧版本保证可以复原,这样就需要备份多个版本的文件。
并且在大多数情况下一个工程需要在多数人来共同维护,那么这种情况下不同人之间修改内容的合并也是非常麻烦的,这时使用git就可以很轻松的解决这些问题。
2.创建版本库
拿到一个空的文件夹 执行
$ git init
这个时候会生成一个.git 文件 这个目录是git 来跟踪管理版本库的,
每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”,所以,创建一个版本库非常简单
3.git提交本地的基础操作
1.git add . (将所有工作区的文件添加版本库的暂存区)git add 文件名 指定某一文件
注:执行git add . 命令是没有任何回应的
2.执行git commit 将git add . 操控的文件(暂存区)提交到提交到当前分支
注意:git commit 只会提交所有暂存区的文件,当我们写了文件git add 提交到暂存区后 修改了代码 直接去git commit 提交文件 发现提交的代码还是之前的代码 因为修改的代码没有提交到暂存区,所以git commit 并没有提交它
git commit -m"我上传一个新文件
master (root-commit) 73f104e] 我上传一个新文件
1 file changed, 2 insertions(+)
351 203255 346 211 277 347 245 2451.txt'
-m
后面输入的是本次提交的说明,1 file changed
:1个文件被改动,2 insertions
:插入了两行内容
4.版本回退问题
1.当我们提交了一个版本之后 继续开发有提交了一个新版本 发现问题去修改了bug 有提交了一个版本 最后经理说从第二个版本之后得版本不要了,客户需要发生变化 你需要回到第二个版本怎么办呢?版本控制系统肯定有某个命令可以告诉我们历史修改提交记录可以用git log 查看我们每次修改提交得记录。
git reset--hard b6b6(提交commid的前四位)可以回到第三次修改的版本
2.
回退到上一个版本,
git reset --hard HEAD^
3.当你回退到上一个版本了 ,电脑关机 再次打开 想回到新版本 用git log可能找不到最新版本commitid ,怎么办?
记录了每一次提交的命令和commitid ,这时候就可以回到新版本
5.撤销修改
当你写了很多逻辑之后发现逻辑走不通,想回到上一个最初版本重写怎么办?
git checkout -- file
可以丢弃工作区的修改
命令git checkout -- 文件名
意思就是,把该文件在工作区的修改全部撤销,这里有两种情况:
一种自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
但是如果你把错误的代码提交到了暂存区了,这时候撤销怎么办呢,用git status
查看一下目前状态,git reset HEAD <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区:
在看下状态 发现说暂存区是干净的,没有要提交的东西
那我现在想把工作区的内容给丢掉呢?
没有什么要提交,工作区是干净的!
6 .删除文件
添加一个新文件,提交到版本库,然后发现这个文件版本库不要了,我就把这个文件删除,在提交版本库就没有问题了 git rm guo2.txt 删除guo2文件
如果最后发现删错了,想要恢复这个guo2文件怎么办呢 ?
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
分支
1.创建分支
创建dev分支,并切换到dev分支
git checkout -b dev
或者
git switch -c dev
直接切换到已有的master分支,可以使用:
$ git switch master
查看当前分支
git branch
2.切换分支
git checkout master
Switched to branch 'master'
3.合并分支
git merge dev
Updating d46f35e..b17d20e
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge
命令用于合并指定分支到当前分支。合并后,再查看readme.txt
的内容,就可以看到,和dev
分支的最新提交是完全一样的。合并完成后,就可以放心地删除dev
分支了:
4.分支的简单命令总结:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
5.冲突解决
准备了一个新的分支写了内容,提交到新分支上,在切换到master分支上 做修改 提交到master分支上,这时合并分支发生冲突,原因即是2个分支上面都有最新修改代码,无法确定最新版本,这时可以手动修改后在提交
6.分支管理策略
7.bug分支
顾名思义bug分支就是用来处理bug的分支(哈哈哈)
,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
当我们在开发dev分支上开发时 收到在fafter分支上要处理一个紧急bug,但是目前的dev分支开发
还没有完成,这时怎么办呢?我们有一个功能可以将工作区的代码暂时的藏起来,
git stash
藏起来后可以查看工作区的状态是干净的,这是可以放心的去建立一个新分支去处理bug,如果是处理aa分支上面的bug,那么我们可以在aa上面建立一个新分支,修改代码好合并到aa上面,这是bug处理完成了,好了 现在想把工作区的代码还原,可以使用git stash pop