Git 工具————Git是目前世界上最先进的分布式版本控制系统

本文将介绍 分布式版本控制系统——Git
最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。
Linus(莱纳斯) 完善并发布了Linux系统,花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

需要了解的知识点:

一、创建版本库:

1、创建版本库 创建一个空目录 mkdir 目录名

2、在这个目录里自己编写一个txt 文本 放到目录名下

3、git目录不能随便修改 c/user/ymt10/目录名/.git

二、时光机穿梭: 版本回退:工作区和暂存区: 管理修改: 撤销修改: 删除文件:

1、 stage 或者叫index 被称为暂存区 , Git自动创建的第一个分支master ,指向master的一个指针叫HEAD

2、git commit 提交更改 把修改后的文件内容从暂存区提交到当前分支

3、可以理解为把需要提交的文件修改,通通放到暂存区,然后一次性提交缓存区所有的修改

4、Git管理的是修改 当用Git命令后,第一次修改被放到暂存区,准备提交,但是第二次修改没有放到暂存区
所以 git commit 只负责把暂存区的第一次修改提交了,那第二次修改如何提交呢?

5、第一种方法: 可以继续git add 再 git commit
第二种方法:第一次修改——git add——第二次修改——git add——git commit

6、场景一:改乱了工作区某个文件的内容?
git checkout – readme.txt 撤销修改
第一种:放到暂存区后 作了修改, 撤销修改就回到添加到暂存区后的状态
第二种:自修改后 没放到暂存区, 撤销修改就回到和版本库的状态

7、场景二:改乱了工作区某个文件内容 还添加到了暂存区,想丢弃修改
第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作

8、场景三:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,
不过前提是没有推送到远程库。

9、每次修改,如果不用git add 到暂存区,那就不会加入到commit中

三、分支管理: 解决冲突: 分支管理策略: bug分支: Feature分支: 多人协作: rebase:

1、解决冲突 :
两个分支各自有个新的提交 无法快速合并 第一步 git status 第二步 修改文件中标记出不同分支的内容
第三步 git add readme.txt 第四步 git commit -m “conflict fixed” 第五步 删除非master分支
第六步 git log --graph命令可以看到分支合并图

2、分支管理策略:
master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,
再把dev分支合并到master上,在master分支发布1.0版本;
每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

3、bug分支:
修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是
在dev上进行的工作还没有提交:Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,
等以后恢复现场后继续工作:第一步 确定分支 选择分支修复 git checkout master
第二步 修改好文件 第三步 git add readme.txt 第四步 git commit -m “fix bug 101”
第五步 git checkout master 合并 第六步 最后删除issue-101分支
第七步 git checkout dev 切换分支继续工作 第八步 git stash list 找到现场
it把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了

4、Feature分支:
发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

5、多人协作:
首先,可以试图用git push origin 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,
用命令git branch --set-upstream-to origin/。
这就是多人协作的工作模式,一旦熟悉了,就非常简单

6、rebase:
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

四、标签管理:创建标签 : 操作标签:
版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,
取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起

1、创建标签:
首先,切换到需要打标签的分支上: 然后,敲命令git tag 就可以打一个新标签:
可以用命令git tag查看所有标签:
认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,
但应该在周一打的标签没有打,怎么办?
git log --pretty=oneline --abbrev-commit
比方说要对add merge这次提交打标签,它对应的commit id是f52c633,敲入命令
git tag v0.9 f52c633
命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令git tag -a -m "blablabla…"可以指定标签信息;
命令git tag可以查看所有标签。

2、操作标签:
命令git push origin 可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d 可以删除一个本地标签;
命令git push origin :refs/tags/可以删除一个远程标签。

五、配置别名:
我们只需要敲一行命令,告诉Git,以后st就表示status:
当然还有别的命令可以简写,很多人都用co表示checkout,ci表示commit,br表示branch
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch

指令方面:
1、git init 初始化一个Git仓库

2、git status 掌握工作区状态 st

3、git diff 文件名 查看修改内容

4、git log 查看历史记录

5、git reflog 查看命令历史

6、git reset --hard HEAD^ 版本回退

7、git reset --hard commit_id 版本穿梭

8、git remote -v 查看远程信息

9、git checkout 目录名 切换分支 co

10、git add 把文件修改添加到暂存区

11、git commit 把暂存区内容提交到当前分支 ci

12、如何提交第二次修改? 第一种方法: 可以继续git add 再 git commit
第二种方法:第一次修改——git add——第二次修改——git add——git commit

16、git rm – test.txt 用于删除一个文件 git checkout – test.txt 用于恢复一个文件

17、 git branch 查看分支 git branch (name) 创建分支 git checkout (name) 切换分支

18、git checkout -b(name) 创建+切换分支 git mergs (name) 合并某分支到当前分支

19、git branch -d (name) 删除分支

20、git branch -D 强行删除

21、git pull 从远程抓取分支

22、git rebase 把未push的分叉提交历史整理成直线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值