git 学习笔记

分布式版本控制系统

客户端并不只是提取最新版本的文件快照,而是把代码仓库完整地镜像下来。

1714573-20190826224953019-1944899941.jpg

git的一些常用指令
  • git diff // 比较工作目录中当前文件和暂存区域快照的差异,即修改后还没有暂存起来的变化内容
  • git diff --staged // 暂存起来的文件和上次提交时快照之间的差异
  • git status
  • git commit // 提交到暂存区
  • git commit --amend // 修改最后一次的提交
  • git commit -a // =git add + git commit
  • git rm // 移除文件
  • git log // 查看提交历史
  • git remote // 查看当前的远程库
  • git fetch // 从远程仓库中拉取本地仓库没有的数据,并不自动合并到当前工作分支
  • git pull // 将远端分支自动合并到本地仓库中当前的分支
git分支

在git中提交,会保存一个提交(commit)对象,该对象包含一个指向缓存内容快照的指针,包含本次提交的作者等相关的附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则由多个祖先。

git中的分支,其实本质上仅仅是个指向commit对象的可变指针。git会使用master作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的master分支,它在每次提交时都会自动向前移动。

1714573-20190826225000946-457467913.jpg

创建一个新的分支: git branch [branchName]

1714573-20190826225005287-575913610.jpg

创建了一个新的分支后不会自动切换到这个分支中,需要执行: git checkout [branchName]

1714573-20190826225106238-977157094.png

也可以将创建新分支和切换到新分支合并成一条指令完成: git checkout -b [branchName]

分支的新建与合并

1714573-20190826225128649-534738090.png

现在要将hotfix的内容合并到master上来,需要执行:

git checkout master

git merge hotfix

合并时会出现Fast forward的提示,由于当前master分支所在的提交对象是要并入的hotfix分支的直接上游,git只需把master分支指针直接右移。这种单线的历史分支不存在任何需要解决的分歧,所以这种合并过程可以称为快进。

1714573-20190826225149262-247069905.png

合并后,可以将hotfix分支删除: git branch -d hotfix

如果现在要将iss53合并到master分支上:
1714573-20190826225222167-1451600392.png

需要执行:
git checkout master

git merge iss53

由于当前master分支所指向的提交对象(C4)并不是iss53分支的直接祖先,git会用两个分支的末端(C4和C5)以及他们的共同祖先(C2)进行一次简单的三方合并计算。

1714573-20190826225241471-2073634630.png

遇到冲突时的分支合并

如果在不同的分支中都修改了同一个文件的同一个部分,git就会无法干净地把两者合在一起。git作了合并,但没有提交,它会停下来等你解决冲突。要看哪些文件在合并的时候发生冲突,可以用git status来查阅。

任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。

可以将里面的内容进行人工修改。在解决所有文件里所有冲突后,运行git add将把它们标记为已解决状态。然后可以用git commit来完成合并提交。

分支的管理

git branch // 给出当前所有分支的清单,分支名字前的*表示当前所在的分支。

若要查看各个分支最后一个提交对象的信息,运行git branch -v。

要从该清单中筛选出你已经(或尚未)与当前分支合并的分支,可以用--merge和--no-merged选项。

转载于:https://www.cnblogs.com/simpul/p/11415591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值