SourceTree

Git

Git相关概念

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
版本控制的分布式和集中式的区别:CVS及SVN这些集中式的版本控制系统,而Git是分布式版本控制系统

  • 集中式版本控制系统

    集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆

img

集中式的缺点:集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟

  • 分布式版本控制系统

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给远程仓库。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

img

三个区域的概念

git的工作总共分四层,其中三层是在自己本地也就是说git仓库,包括了工作目录、暂存区和本地仓库

  • 工作区(workspace):就是你在电脑里能看到的目录。
  • **暂存区(index):**一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • **版本库(repository):**工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
  • **远程仓库(remote)**在中心服务器,也就是我们做好工作之后推送到远程仓库,或者从远程仓库更新下来最新代码到本地。

    img

    Git所存储的都是一系列的文件快照,然后git 来跟踪这些文件快照,发现哪个文件快照有变化他就会提示你需要添加到暂存区或是提交到本地仓库来保证你的工作目录是干净的

    img

    仓库

    仓库是记录文件或目录状态的地方,存储着内容修改的历史记录。在数据库的管理下,把文件和目录修改的历史记录放在对应的目录下

    节点

    git使用提交(commit)之后就会生成一个节点,之前的节点成为这个节点的父节点

    分支

    为了将修改记录的整体流程分叉保存。分叉后的分支不受其他分支的影响

SourceTree

SourceTree的概念

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mn版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。

SourceTree拥有一个精美简洁的界面,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。

SourceTree拥有完整的Git功能:

  • 通过一个简单的用户界面即可使用所有的Git命令

  • 通过一次单击,即可管理所有的Git库,无论是托管的还是本地的

  • 通过一次单击,即可进行commit、push、pull、merge等操作

  • 一些先进的功能,如补丁处理、rebase、shelve、cherry picking等

  • 可以连接到你托管在BitbucketStash、Microsoft TFS或GitHub中的代码库


仓库相关操作

创建本地仓库

创建本地仓库

打开本地仓库

打开本地仓库

克隆远程仓库

克隆远程仓库

关联远程仓库

关联远程仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z6h9eMoY-1649647287871)(https://gitee.com/FriedRicenoodles/pictures/raw/master/SourceTree/%E5%85%B3%E8%81%94%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%932.png)]

获取

获取

获取(fetch)从远程仓库获取最新版本到本地版本库 不会自动合并(merge)到工作空间


节点相关操作

提交

提交

提交(commit)将工作空间修改提交到本地库

重置

重置(reset)主要用于将改动提交(commit)到本地而未推送(push)到远程仓库时,reset是用来重置本地仓库的commit命令

重置示意图

重置

image-20211206121145156

  • 软合并:保存改动文件,将改动文件回退到暂存区,也就是git add之后的状态

  • 混合合并:保存改动文件,将改动文件回退到未暂存状态,也就是git add之前的状态

  • 强行合并:丢弃改动文件,强制回退到指定版本

回滚提交

回滚(revert)主要用于已经push到远程仓库时,revert后会新增加一个commit,commit的内容是之前提交内容的反操作,就像你修改内容提交一样,远程仓库认为这是一个新的提交,从而应用到远程分支上

回滚提交示意图

回滚提交

回滚后执行push即可将远程仓库回滚指定的提交

参考链接 https://blog.csdn.net/crj252196873/article/details/113641883


分支相关操作

新建分支

新建分支

合并分支

future分支为主分支master的工作副本,当future分支完成作业后使用合并(merge)可以合并多个提交到master

合并分支

删除分支

删除分支

当分支有新的提交没有被合并到其他分支删除时将提示错误,只能用强制删除

切换分支

切换分支

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录

制造冲突

当我们同时在两个不同分支修改同一文件提交后,将两个分支合并时将发生冲突

  1. master分支的README.md中第一行修改为masterchange

  2. future分支的README.md中第一行修改为futurechange

  3. future分支合并到master分支

    制造冲突

当我们多人工作时其他人修改了远程仓库的某个文件,我们也修改了该文件推送时就会发生冲突

  1. 当远程仓库的master分支的README.md中第一行被修改为1111
  2. 将本地仓库的master分支的README.md中第一行修改为2222 并提交
  3. 此时我们先获取远程仓库是否有更新
  4. 将更新合并到master分支时就会发生冲突

解决冲突

解决冲突

选中发生冲突的文件,点击操作->解决冲突选择解决方式即可

拉取

pull

拉取pull从远程拉取最新版本到本地并自动合并merge,相当于fetch+merge

推送

push

推送push将本地库修改提交到远程库


其他

书写忽略文件

在使用git时经常会遇到项目中的一些文件不需要跟踪,可以使用以下两种方法忽略不需要跟踪的文件

书写忽略文件

.gitignore.txt中书写忽略文件如*.obj或者obj/,在提交时忽略.obj文件和obj目录

在未跟踪的文件右击选中忽略

忽略

已跟踪文件不可被忽略,需要先停止跟踪

停止跟踪

停止跟踪远程分支后,该分支所有修改只会提示提交到本地仓库而不会提示推送到远程仓库

停止跟踪

如果某个文件修改后不想提交到本地库又想保持工作区的整洁,我们可以选中该文件右击选中停止跟踪后,该文件任何修改都不再提示需要提交

停止跟踪

创建补丁

菜单栏操作->创建补丁,选择要创建的节点补丁确认即可,也可直接选中节点右击在快捷菜单中点击创建补丁

  • 本地仓库有masterdevelop分支,两个分支中都有文件1.txt,将develop分支中1.txt中第一行添加1111并提交

创建补丁

  • 在版本库中选中该提交节点创建补丁

创建补丁

应用补丁

菜单栏操作->应用补丁,将某次提交节点修改记录打包成补丁,应用该补丁可以还原该次提交

  • 切换回master分支,主菜单操作->应用补丁将我们刚才生成的补丁添加

应用补丁

  • 此时我们可以看到master分支的1.txt中应用了补丁的提交记录

应用补丁

  • 此时我们将master分支重置到未应用补丁时修改1.txt第一行添加2222并提交

应用补丁

  • 此时我们修改了1.txt,补丁中的提交记录也是修改’1.txt’,我们再次应用该补丁将会发生冲突

应用补丁

  • 解决下冲突即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eaisrrda-1649647287883)(https://gitee.com/FriedRicenoodles/pictures/raw/master/SourceTree/%E8%A1%A5%E4%B8%817.png)]

贮藏

当在当前分支做了一些修改,突然需要切换到另一个分支去做其他一些紧急的事情,但是既不想提交这些修改,也不想将这些修改带到别的分支,此时可以选择贮藏功能

贮藏

贮藏后在左下角可以看到贮藏的副本,可以恢复到你当前的工作副本

贮藏后

丢弃

丢弃就是放弃你之前这个文件的所有修改,相当是一键还原到初始状态
丢弃

移除

移除是直接删除本地文件的
移除

创建标签

创建标签

创建标签后在左下角可以看到创建好的标签,点击后可以快速跳转到标注的节点,便于我们日常开发记录

删除标签

删除标签

最终

移除是直接删除本地文件的
移除

创建标签

[外链图片转存中…(img-A0tjMItZ-1649647287884)]

创建标签后在左下角可以看到创建好的标签,点击后可以快速跳转到标注的节点,便于我们日常开发记录

删除标签

[外链图片转存中…(img-dgsYvyXI-1649647287885)]

最终

最终

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值