Git内容小结

Git

一.Git简介

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

1.关于版本控制

什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。

2.关于分布式版本控制系统

 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

二.Git的本地仓库操作

工作区,暂存区,版本库三者之间的区别:

01.创建本地仓库

1.创建目录(也可以直接在本地以新建的方式创建)

$ mkdir  目录名		

2.进入项目目录

$ cd 目录名

3.仓库初始化(即让Git知道需要他来管理这个目录)

$ git init

执行后,打开这个项目目录下,点击隐藏目录你会发现多了一个.git文件夹。不能删除,也不能随意更改。

到这里就可以在里面进行开发。

02.常用指令操作

1.查看当前工作状态:

$ git status

2.将工作区文件添加到缓存区:

$ git add 

提交至版本库:

$ git commit -m "注释内容"

注意:必须添加注释内容,否则无法提交

4.修改

1.修改后,重新添加到暂存区后统一提交

2.查看修改(比较修改):

	git  diff:比较工作区与暂存区。

5.忽略文件

1.新建.gitignore配置文件,并在其中添加要忽略的文件或目录,每行表示一个忽略规则。

2.让Git识别该配置文件,例如:

$ git config cat.gitignore

6.移除暂存区文件

$ git rm 

三.远程仓库操作

使用步骤:

1.Github线上仓库的创建

2.使用线上仓库

方式一:基于https协议:

1.克隆远程仓库到本地

		1.创建空目录。

		2.复制https对应得地址。

		3.使用clone指令克隆线上仓库到本地

$ git clone 线上仓库地址

2.本地仓推送到远程仓库

	指令:

		提交到线上仓库的指令

$ git push  //未指定库以及分支
$ git push origin master

注意:1)如果你提交成功后,其他人也往远程仓库提交了新的内容。再次使用时,你需要拉去线上的仓库的最新版本

使用命令:

$ git pull 

2)如果是首次提交,首先应获取权限,因为不是任何人都可以往线上仓库提交内容。

获取权限:

	修改".git/config 文件内容,url这一项中,在github.com前面加上:用户名:密码@

如:

	url=https://用户名:密码@github.com/用户名/仓库名.git

方式二:基于ssh协议

该方式与前面https方式相比,只是影响github对于用户的身份鉴定方式,对于git的具体操作没有任何改变。

		步骤:

		1.生成客户端公私钥文件。

		2.将公钥上传到Github。

1.克隆远程仓库到本地

		1.创建空目录。

		2.复制https对应得地址。

		3.使用clone指令克隆线上仓库到本地。

$ git clone ssh地址

2.本地仓库推送到远程仓库

			(与https基本一致)

注意:相比于https,ssh一旦配置好后,以后的项目就不需要一个个去配置用户名和密码了

3.冲突

1.产生冲突原因

产生:多个开发者同时使用或者操作git中的同一个文件,最后在依次提交commit和推送push的时候,第一个操作的是可以正常提交的,而之后的开发者想要执行pull(拉)和push(推)操作的时候,就会报冲突异常conflict。

解决:保留自己修改的数据,同时保留别人的数据信息;同时pull代码之前,需要手动解决冲突之后再作提交。

2.冲突解决

1.先pull远程仓库内容

2.根据提示手动修改文件

删去<<<<<<<<<<<<<<<<<HEAD  内容即可。



3.push至远程仓库

4.分支

1.分支的概念

Git 的分支,就是开发过程中,要选择的一条路,你可以选择和其他小伙伴一起走同一条路,也可以自己走一条路,路与路之间相互没有影响,作为路的主人,你也随时可以让两条路合并。

深入一点的话,是这么个概念:

Git 的分支,其实本质上仅仅是指向提交对象的可变指针,这个可变指针,指向路的终点。同时,还有一个比较特别的 HEAD 指针,用于记录当前工作的位置,借用上面的例子,这个 HEAD 指针等于在路上走的你自己,你在哪,指针就在哪,你在哪个分支,HEAD 指针就指向哪个分支的指针。

这里master就是git默认的分支

当我们新创建一个分支dev并使用它时,HEAD指针指向dev这个新的分支

2.创建分支

 git branch name

需要注意是否在当前分支上创建分支

3.查看分支

三个命令,让你想看什么分支就看什么分支,就是这么方便

 git branch //查看本地分支
 git branch -r //查看远程分支
 git branch -a //查看本地和远程的所有分支

4.分支的删除

git branch -d <name>
git branch -D <name> //强制删除

删除远程分支需要 push 操作。

git push origin :<name>

5.检出(切换)分支

	1.已经存在的分支,现在要切换过去。

 git checkout name

	2.创建一个新分支,并切换到新分支,这个一步到位的话需要 -b 参数。

git checkout -b branch name

5.分支的合并

分支合并使用到的命令是

git merge branchname

但实际上分支的合并有两种方式:

  • Fast-Forward(快进式)

    这种方式实际上只是移动了HEAD指针。

  • Recursive Strategy Merge(策略合并式)

使用这种方式合并,先要切换到想要保留的分支上,然后再将另一条分支合并。

这种方式可能会产生冲突。

5.回退

git reset

原理:修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,如下图所示,假设我们要回退到版本一:

适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。

具体操作:

1.首先查看版本号,确定需要回到的时刻点

$ git log
$ git log --pretty=oneline // 简化了信息
$ git reflog//可以查看reset和已删除的commit记录

注意: 1. 输入git log指令并回车后,输入q退出

	2.log提供了不同的搜索条件,比如按时间查找,按作者查找等等.....

2.回退操作:

$ git reset –-hard 版本号 
$ git reset --hard HEAD^

( ^ 表示回到上一个版本,如果需要回退到上上个版本的话,将HEAD改成HEAD^, 以此类推。那如果要回退到前100个版本,这种方法肯定不方便,我们可以使用简便命令操作:git reset –-hard HEAD~100 );

$ git reset --soft HEAD^ 

执行之后版本回退到上一个版本,但是修改的内容保留

  1. 使用“git push -f”提交更改到远程库:

此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧,所以我们要用“git push -f”强制推上去。

git revert

原理:“反做”某一个版本,以达到撤销该版本的修改的目的

具体操作:1.使用“git revert -n 版本号”反做,并使用“git commit -m 版本名”提交:

(1)反做

$ git revert -n 版本号//该版本号是需要反做的版本

(2)提交

$ git commit -m 版本名

2.使用“git push”推上远程库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值