(一)Git
(1)Git简介
Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时都十分高效,而且非常的高大上。
作为一个分布式版本控制系统来说,Git是没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。例如我们一个小团队合作开发一个项目,我们可以先建立一个远程仓库,需求分析,搭建大体框架,将项目框架上传至远程仓库,队员可以git clone项目,各自完成自己负责的部分,完善项目等,写好之后还可以比对之前的版本,本地项目写好之后上传至远程仓库,出现错误还可以版本回退等等。
(2)Git的三个区域
“Git有三个最具代表性的特色,它们分别是cheap local branching, convenient staging areas, and multiple workflows,即轻量的本地分支, 方便的暂存,以及多工作流。”这是我在csdn论坛上的一篇博客中看到的一句话,我觉得它很好地概括了Git的三个区域:工作区、暂存区以及版本库。下面有两张图,详细地诠释了三个区域的工作状态。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vsozh4Og-1626414812383)(Git+SourceTree.assets/Git1.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-otGYuvFt-1626414812385)(Git+SourceTree.assets/Git2.png)]
下面,我又分别学习了三个区域的知识,并将知识点做如下归类。
1.工作区
根据我自己的理解,工作区其实可以变相解释为本地仓库,首先工作区是创建在你自己的电脑上,其次工作区内有一个隐藏的目录叫.git,这个不算作工作区,而是叫Git的版本库,也就是Git的第三个区域,第三个区域的理解我写在了下面。而对于工作区来说,你要做的就是将代码文件存入该区内,然后通过Git Bash的命令窗口,使用git add命令把该文件添加到第二个区域暂存区内。我在学习的过程中是结合了SourceTree来进行这些操作的,不过命令控制台的操作我也了解了一下,下图是使用git add命令添加了一个文本文档readme.txt。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-errhSvWq-1626414812387)(Git+SourceTree.assets/Git3.png)]
2.暂存区
暂存区用我自己的话来说,就是一个缓冲带,它存在于工作区和版本库之间,(这里的版本库不是我之前所提到的每个人电脑上都有的那个Git版本库,具体解释在下面版本库部分。)这个缓冲带的存在给与了用户更加灵活便捷的操作体验。假如我提交到版本库的代码文件中出现了错误,而又因为在工作区的文件 被git add命令提交之后,它首先是被提交到暂存区之中,然后再通过git commit命令提交到版本库中,因此就有了Git的回滚操作,这样可以使得你修改自己的代码更加容易而不至于影响到整个项目的进程。
3.版本库(仓库)
版本库是Git的最后一个区域,也是最重要的一个区域。从版本库的定义来看,它指的是每一台使用了Git的计算机上都会有一个的东西,根据我阅读博客和自主学习之后的理解,版本库其实就是仓库。而Git的版本库也就是仓库又有本地仓库和远程仓库之分。本地仓库也就是本地的版本库包含了一个.git目录和工作区,如下图所示,这是我创建的一个本地仓库ctc2,我在里面有一些txt文件以及.git目录。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NczosiSq-1626414812391)(Git+SourceTree.assets/Git4.png)]
而远程仓库举个例子来说,就是存放一整个项目组最终提交的项目代码的云仓库。而你所负责的部分代码则是存放在你自己的本地仓库中,然后通过Git Bash或者SourceTree来把它们提交到远程仓库中去。而远程仓库中的所有内容是可以通过克隆操作来复制到你的本地仓库中,同理本地仓库中的所有内容也可以通过拉取和推入操作来复制进远程仓库中。下图是我自己在Gitee上创建的一个远程仓库,我已经通过SourceTree上的clon操作把它和我的本地仓库ctc2关联了起来,可以从图中看到,我的本地仓库中的内容都已经更新到我的远程仓库中了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sW5hk6OG-1626414812391)(Git+SourceTree.assets/Git5.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nrWkix5v-1626414812393)(Git+SourceTree.assets/Git6.png)]
(3)分支、节点
1.分支
分支的概念我在博客上看到了一张非常形象的图可以解释,这里引用一下。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z60izAAq-1626414812394)(Git+SourceTree.assets/Git7.png)]
意思就是开发过程中,要选择一条路,你可以选择和其他小伙伴一起走同一条路,也可以自己走一条路,路与路之间相互没有影响,作为路的主人,你也随时可以让两条路合并。具体解释就是分支其实是一个可变指针,它指向最后的终点和你要提交的对象。同时还有一个比较特别的 HEAD 指针,用于记录当前工作的位置,借用上面的例子,这个 HEAD 指针等于在路上走的你自己,你在哪,指针就在哪,你在哪个分支,HEAD 指针就指向哪个分支的指针。如下图所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vo3clQfd-1626414812395)(Git+SourceTree.assets/Git8.png)]
分支的主要操作有创建、查看、删除、重命名、检出和合并。其中较为简单的是创建、查看、删除和检出分支,它们所涉及到的命令非常简单。首先是创建分支:
1 git branch<name>
然后是三条查看的命令:
1 git branch //查看本地分支;
2 git branch -r //查看远程分支;
3 git branch -a //查看本地和远程的所有分支;
而作为删除分支的命令来说,当本地分支删除后,推送到远程仓库后,远程仓库并不能自动删除远程分支(原因,下回分解)。所以,分支的完全删除是分两个部分的,一个是本地,一个是远程。本地删除操作需要加上 -d或者 -D 参数,参数的名称来自英语 delete的缩写。两者的区别在于-D比-d要粗暴一点。当被删除分支有新内容没有被合并的时候,使用-D,会直接删除, 使用-d,会提示该分支有新内容没有被合并,不执行删除。删除需谨慎,所以我觉得非特殊情况下,还是使用温柔的-d要好一点,这样可以避免自己负责的部分出现一些无法挽回的错误。
1 git branch -d <name>
2 git branch -D <name> //强制删除
删除远程分支则需要push操作。
1 git push origin :<name>
重命名分支根据我的学习,是属于伪命题的存在,如果你对分支的名字不是很满意,想重新起的话,那只有创建一个和要修改分支内容一样的分支,起上你喜欢的名字,然后再把之前的给删掉。
检出分支的意思其实就是切换当前分支,移动HEAD指针,将它指向要切换的分支指针处。
git checkout <name>
这是已经存在的分支,现在要切换过去。
git checkout -b <branch name>
以当前分支为基础,创建一个新分支。
git checkout -b <branch name> <SHA1>
以指定的某一个提交,创建一个新分支。
合并分支是这些操作中最重要的一个操作,我通过学习了解到分支的合并是十分智能的,合并有两种模式可以选择,但是不需要我们参与,Git会根据分支情况的不同,自行判断选择。主要使用的命令就是
git merge <branch name>
而分支合并的两种模式分别是Fast-Forward(快进式)和Recursive Strategy Merge(三方合并式),我从博客上引用了几张图可以形象地解释这两个模式。
Fast-Forward:
合并前:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RbkNDqU8-1626414812396)(Git+SourceTree.assets/Git9.png)]
合并后:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZvaIXSVr-1626414812397)(Git+SourceTree.assets/Git10.png)]
Recursive Strategy Merge:
合并前:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-784gwXVQ-1626414812397)(Git+SourceTree.assets/Git11.png)]
合并后:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GSq7rvA6-1626414812398)(Git+SourceTree.assets/Git12.png)]
而分支的合并也不是一帆风顺的,有时候会遇到冲突的情况,这个时候就需要我们去解决冲突。解决的办法最直接的就是打开冲突的文件,直接修改产生冲突的部分。当然我在csdn上还看到一种方法,就是通过SourceTree配置文本文件对比工具Beyond Compare来解决。这个方法稍许有些复杂,大部分情况都可以通过直接修改冲突部分来解决。
最后,分支是可以进行回滚操作的。但是只能进行本地分支的回滚,远程分支的回滚只能删除之前的远程分支,然后把本地回滚好的本地分支,push 到远程。本地回滚的命令:
git reset --hard commit id
2.节点
我自己理解的Git中的结点含义是指提交点,你每次使用commit命令提交代码之后都会产生一个节点,然后之前的节点就会成为这个新节点的父节点,为什么会有节点和分支这种概念出现呢,我想应该是因为整个Git的操作流程因为HEAD指针和Branch指针的存在,使你可以形象地把它看成是一棵树,这样来理解节点的概念就方便多了。而根据我在csdn上的查找和阅读,节点结构里就包含了之前学习过的Git的三个区域。
(二)SourceTree
(1)SourceTree的概念
SourceTree是作为Git的可视化管理工具而存在的,它的使用可以提高整个团队的工作效率以及降低技术入门和使用的门槛,极大地降低沟通成本。
(2)仓库的相关操作
1.创建本地仓库
我之前是在SourceTree上的本地仓库页面下创建了一个本地文件夹,然后右击这个文件夹,选择新建仓库选项即可。如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J90oOGfN-1626414812398)(Git+SourceTree.assets/st1.png)]
2.打开本地仓库
我之前创建了一个ctc2的本地仓库,可以直接在硬盘上打开,也可以在SourceTree中点击上方横栏位置的加号,然后选择Local,在下方显示的列表中打开ctc2这个本地仓库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8HzcaJU-1626414812399)(Git+SourceTree.assets/st2.png)]
3.克隆远程仓库
远程仓库的克隆可以通过点击文件选项里的克隆/新建来操作,点击上述按钮之后会跳转到Clone页面,在这个页面输入远程仓库的URL,待系统检测完成,确定是一个Git仓库之后即可进行克隆。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dm9dJSnz-1626414812399)(Git+SourceTree.assets/st3.png)]
4.获取远程仓库
远程仓库的获取一般是在Gitee上去复制仓库的URL,然后将这个URL复制到SourceTree中进行Clone,即可获取远程仓库内的所有内容。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LjSWBWff-1626414812400)(Git+SourceTree.assets/st4.png)]
5.关联远程仓库
远程仓库的关联是比较复杂的一项操作,我一开始关联远程仓库的时候就出现了问题,当时在Clone页面输入远程仓库的URL之后,我的SourceTree出现了闪退的问题,在询问了老师和我自己查阅资料之后,我发现应该是我的远程仓库是一个空仓库的问题,所以我首先从本地仓库上传了一个txt文本之后,远程仓库即可关联Clone。至于关联仓库的核心,就是设置SSH公钥,设置SSH公钥的方式主要操作如下首先通过Git Brash来输入命令
$ ssh-keygen -t rsa -C "youremail@example.com"
来创建公钥,三次回车之后,没有报错即是创建成功,然后我们可以在用户主目录中找到.ssh文件,里面会生成id_rsa和id_rsa.pub两个文件,这两个文件就是SSH Key的密钥对,然后登录到Gitee上,点击个人主页旁边的设置进入,找到安全设置里面的SSH公钥,添加公钥,把id_rsa.pub文件的内容复制粘贴到公钥中,点击确定,这样本地仓库就和Gitee上的远程仓库关联起来了。然后登录到Gitee上,点击个人主页旁边的设置进入,找到安全设置里面的SSH公钥,添加公钥,把id_rsa.pub文件的内容复制粘贴到公钥中,点击确定,这样本地仓库就和Gitee上的远程仓库关联起来了。然后别忘了在SourceTree中添加公钥,如下图所示。因为我自己之前在Gitee上已经添加过公钥了,所以我的界面上会显示已有公钥数1。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tssXsEKu-1626414812401)(Git+SourceTree.assets/Git13.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-10DhrlGz-1626414812402)(Git+SourceTree.assets/st5.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fr2fi0YY-1626414812402)(Git+SourceTree.assets/st6.png)]
(3)节点的相关操作
1.提交
提交是节点操作里最核心的功能,甚至可以说是整个SourceTree里最核心的功能。下面是我提交一个文本文档到远程仓库的主要过程。
首先选择一个分支,我这里选择的是我之前检出的分支develop。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mbX0EUZn-1626414812403)(Git+SourceTree.assets/st7.png)]
然后点击左上角的提交,进入下图所示的界面,点击鼠标停留处的加号将文件提交到暂存区,左下角的同步推送到远程仓库根据情况勾选即可,我一般都是勾上,文本框中填写注释,最后点击右下角的提交。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-va9UuVyc-1626414812403)(Git+SourceTree.assets/st8.png)]
提交之后,点击拉取,选择对应分支,更新一下本地仓库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-01M6LSjF-1626414812404)(Git+SourceTree.assets/st9.png)]
拉取之后再点击推送,选择对应分支,将代码送入远程仓库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eMy9gdA3-1626414812404)(Git+SourceTree.assets/st10.png)]
总体的流程就是先将本地仓库中的代码提交到暂存区,然后通过代码拉取更新本地仓库,推送到远程仓库。
2.重置
我在一开始的时候,学习到重置的定义:回到最近添加(add)/提交(commit)状态。我当时就有一个问题:重置和回滚操作是不是同样意思的操作,如果不是那重置和回滚的区别在哪儿?后来我在csdn上查找了一下,发现重置和回滚是有区别的。
重置是指将重置到当前操作的版本,该版本之后的所有历史操作都会清除,相当于回到当时准备提交的状态。选择刚刚推送分支节点的前一个或者某个节点,右击–>“重置当前分支到此次提交" ,此时会让你选择使用模式。 “软合并—保持所有本地改动”——是指本地仓库将会重置到此次提交的节点,并且大于此次节点的本地仓库改动的代码将会回退到你的文件状态里的暂存区。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9qBiCSpo-1626414812404)(Git+SourceTree.assets/st13.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KRf1QQ5P-1626414812405)(Git+SourceTree.assets/st14.png)]
还有一种模式“强行合并–丢弃所有改动过的工作副本”,如果使用此模式 ,本地仓库将重置到此次提交的节点,并且大于此次节点的本地改动的代码将会删除,重置完后,此节点会提示落后于远端仓库n个版本,(n取决于你重置节点的选择,或者说你要删除的代码变动节点区间),这时候你就会有两个选择。要么在刚刚重置的节点上新建分支,重写正确的代码,然后推送到远端的新分支,回头再把这个旧分支的删掉,并把新分支的名字改成旧分支,这样做会非常的麻烦。要么就是拉取,拉取之后就和原来一样了,但是我后来想想可能会冲突,因为远端的还没删,那我该怎么办呢,此时本地仓库的改动已经删掉了。所以本地仓库和远端推送之前的版本应该是一样的。只需要强制推送当前本地仓库到远端即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5nqwdJy-1626414812406)(Git+SourceTree.assets/st54.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rIRQth4D-1626414812406)(Git+SourceTree.assets/st53.png)]
重置还有一个混合重置,就是将之后的文件回到你的未暂存区。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G8wB6dND-1626414812407)(Git+SourceTree.assets/st57.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zgX4Fly3-1626414812407)(Git+SourceTree.assets/st55.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vrzCUKU-1626414812408)(Git+SourceTree.assets/st56.png)]
3.回滚提交
回滚是指回滚这个节点的操作,但是其他节点的历史操作还存在。选择本地分支你刚提交的节点上,右击回滚一下即可,这时候本地分支会出现“Revert”的字样,推送按钮会出现提示推送的角标,这时候你可以直接推送一下,远端也不会有变化,只不过是推送一些日志记录或者其他与代码无关的,或者也可以提交好正确的代码后,一起推送。虽然历史操作存在,但是远端仓库和本地仓库最后的版本会保持一致。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DUJQEsEa-1626414812408)(Git+SourceTree.assets/st11.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsvnUXSn-1626414812408)(Git+SourceTree.assets/st12.png)]
(4)分支的相关操作
1.新建分支
在新建分支时,我们需要在哪个主分支的基础上新建分支必须先要切换到对应的主分支才能到该主分支上创建分支,如下我们要在develop分支上创建一个新的分支。分支的创建过程是先在本地主支上新建一个分支,然后在分支上上传文件并推送到远程仓库之后,远程仓库上才会显示对应的分支。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-emdxfVqA-1626414812409)(Git+SourceTree.assets/st15.png)]
2.合并分支
在合并分支之前我们需要把代码拉取到最新状态,这样可以避免出现冲突。在需要合并的分支上右键,合并xx分支到当前分支即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-auyqPTSc-1626414812409)(Git+SourceTree.assets/st16.png)]
下面是合并成功的标志。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eGnvwh5C-1626414812410)(Git+SourceTree.assets/st17.png)]
3.删除分支
在你想要删除的分支上右键,选择删除即可。注意,你不能删除当前分支,只能切换到另一分支再点击删除你想删除的分支。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OsyeWRcn-1626414812410)(Git+SourceTree.assets/st18…png)]
4.切换分支
在本地分支上双击你想要切换到的分支,即可。远程分支的切换是右键检出,如果已存在本地分支会有提示。
5.制造冲突
冲突的定义就是两个分支对同一个节点同时进行了操作。
先在SourceTree中Clone一个新的项目,我取名为ctc3,如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7ZiqSZj-1626414812411)(Git+SourceTree.assets/st19.png)]
然后我在ctc3中向远程仓库提交了txt文件冲突测试。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BYC4DxzW-1626414812411)(Git+SourceTree.assets/st20.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZeceS5d-1626414812412)(Git+SourceTree.assets/st21.png)]
然后我在ctc2中,修改了冲突测试文本文件的内容,并进行了提交,但是我没有勾选立即推送变更到origin/master),推送代码遇到了错误,然后在拉取代码时遇到了冲突。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aL6Ls8Bv-1626414812413)(Git+SourceTree.assets/st22.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nETMNoN4-1626414812413)(Git+SourceTree.assets/st23.png)]
6.解决冲突
我选择的解决冲突的办法是直接修改冲突的内容,然后标记为已解决。接下来再提交一次,就没有发生错误了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jePyQppU-1626414812413)(Git+SourceTree.assets/st24.png)]
7.拉取
根据我的学习,拉取的作用是更新本地仓库中的代码,在每一次提交完代码之后,都要进行拉取操作,保持更新,避免出现冲突和错误。
8.推送
推送是提交代码的最后一步,在提交时可以点击提交页面左下角的立即推送到远程仓库,这样提交之后无需去点击推送,但如果未勾选,点击提交后还需点击推送,才能把代码传入远程仓库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVPQB5rC-1626414812414)(Git+SourceTree.assets/st52.png)]
(5)其他
1.书写忽略文件
在以后正式使用Git时会遇到项目中的一些文件不需要被跟踪,所以就有了忽略文件这个操作的产生,我了解之后发现有两种忽略文件的方法,第一种就是直接在文件的菜单中忽略文件,这种操作很浪费时间,而且当你的项目文件多的时候,你不可能去一个个操作你想要忽略的文件,所以有第二种一劳永逸的方法。就是打开如图鼠标所指的SourceTree的设置,选择高级设置,然后点击编辑仓库指定忽略列表,也就是.gitignore文件,忽略文件只会对未跟踪的文件生效。这里可以看到我的.gitignore文件是空白的,因为我之前并没有编辑它。这里要注意的是如果在没有添加 .gitignore 文件的前提下提交了代码之后再提交 .gitignore 文件,或者是中途添加某一文件类型到 .gitignore 文件中,需要在项目文件的根目录下通过添加以下命令行的方式,让 .gitignore 文件生效:首先是删除所有缓存:
git rm -r --cached .
然后是重新添加所有文件:
git add .
最后再添加更改变化:
git commit -m“xxxxxx”
.gitignore的配置语法:
以斜杠“/”开头表示目录;
以星号“*”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。.ignore文件只需提交一次,无需多次提交,后续遇到新版本需要多增忽略文件的话,需要编辑添加之后,使用Git命令清除缓存后再添加。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r0FRfiWN-1626414812414)(Git+SourceTree.assets/st25.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jbMhX3AQ-1626414812415)(Git+SourceTree.assets/st26.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-upxOCv30-1626414812415)(Git+SourceTree.assets/st27.png)]
进入项目根目录有一个简单方法就是在SoureceTree中点击命令行模式,即可进入根目录编辑。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q38pAqSM-1626414812416)(Git+SourceTree.assets/st28.png)]
2.停止跟踪
当你的文件已经推送到远端了,这时你编辑忽略文件想要忽略你之前推送的文件,忽略文件这时是不会生效的,你需要先将该文件停止跟踪,之后将删除操作推送到远程仓库之后,忽略文件才会再次生效。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PwmH44Ja-1626414812416)(Git+SourceTree.assets/st29.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-peck3403-1626414812417)(Git+SourceTree.assets/st60.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2TBWYIGE-1626414812418)(Git+SourceTree.assets/st58.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YcwQtS8p-1626414812418)(Git+SourceTree.assets/st59.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-poBTDc83-1626414812419)(Git+SourceTree.assets/st60-1626336400174.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52s3bWrQ-1626414812419)(Git+SourceTree.assets/st.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b78xYyFI-1626414812420)(Git+SourceTree.assets/st61.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mQ1vKqMf-1626414812420)(Git+SourceTree.assets/st62.png)]
3.创建补丁
根据我的学习,补丁和分支有密切关系,补丁其实就是在主分支出现错误的那个节点上检出一条新的分支作为bug分支,在这个分支上创建补丁,最后将bug分支合并到主分支上并且删除bug分支。bug分支在合并到主分支之后可能会出现冲突,需要解决冲突。补丁主要是应用于修补系统出现的Bug或者进行代码迁移的时候。Git的补丁方案有两种,一种是用git diff生成的UNIX标准补丁.diff文件,还有一种是git format-patch生成的Git专用.patch 文件。diff文件只是记录文件改变的内容,不带有commit记录信息,多个commit可以合并成一个diff文件。patch文件带有记录文件改变的内容,也带有commit记录信息,每个commit对应一个patch文件。我在SourceTree中尝试了一下补丁的创建,首先是提交一个文件,然后对这个文件进行修改,将这个修改的版本作为补丁来创建,然后将修改丢弃,不然会产生错误。随后在提交文件的节点创建一条分支,对这条分支应用补丁,随后将分支和主分支合并,会发现文件已修改成补丁文件的内容,最后再将分支删除。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XDxAKDgX-1626414812421)(Git+SourceTree.assets/st44.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KVU6x9t2-1626414812421)(Git+SourceTree.assets/st45.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kuT50eCd-1626414812421)(Git+SourceTree.assets/st63.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wPow7hyT-1626414812422)(Git+SourceTree.assets/st64.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aAF0lqeg-1626414812422)(Git+SourceTree.assets/st65.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iR6ZvsgK-1626414812423)(Git+SourceTree.assets/st66.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XcguOse-1626414812423)(Git+SourceTree.assets/st67.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AFI8nmc9-1626414812424)(Git+SourceTree.assets/st68.png)]
4.应用补丁
应用补丁我使用的是SourceTree的Git工作流来创建和应用补丁。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yFKa0fpk-1626414812424)(Git+SourceTree.assets/st48.png)]
5.贮藏
如果你已经提交了一个代码文件,但是之后又进行了修改,你修改过的文件会被SourceTree视为一个新的文件,并且需要你重新提交,如果这个时候你不着急上传到分支,就可以使用贮藏功能,点击顶端的贮藏,添加备注之后,修改的文件就会被放入贮藏区,一般来说保留暂存的更改不需要勾选,一旦勾选会给你带来冲突,除非特殊情况需要把修改带到别的分支时才需勾选。需要注意的是新创建的代码需要先暂存再贮藏。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bk5Tcmd3-1626414812424)(Git+SourceTree.assets/st30.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vsvPTSUL-1626414812425)(Git+SourceTree.assets/st31.png)]
6.丢弃
丢弃就是放弃这次修改,右键你修改过的文件,选择丢弃选项,点击确认,即可发现之前的修改被删除了,文件内容回到了修改之前的情况。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XCSVBb8M-1626414812425)(Git+SourceTree.assets/st33.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rNzwWZ0t-1626414812426)(Git+SourceTree.assets/st32.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JHAoWMar-1626414812426)(Git+SourceTree.assets/st34.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kNT9eP6y-1626414812427)(Git+SourceTree.assets/st35.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WoHMpCLl-1626414812427)(Git+SourceTree.assets/st33-1626336420353.png)]
7.移除
移除就是将你修改过的文件直接删除,要小心使用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ov1anzQD-1626414812427)(Git+SourceTree.assets/st33-1626336421914.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V3LJNNPK-1626414812428)(Git+SourceTree.assets/st32-1626336423489.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PmBQLQ80-1626414812428)(Git+SourceTree.assets/st36.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OAuoEcrr-1626414812429)(Git+SourceTree.assets/st37.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVnTspoX-1626414812429)(Git+SourceTree.assets/st38.png)]
8.创建标签
在我们进行开发迭代过程中,会遇到这种情况,当前的版本是1.0.0。但需要找到版本号0.5.0的版本提交时,可能因为时间久远,不能快速定位到当时V0.5.0的提交记录,这个时候我们就需要进行标签管理了。比如我在发布1.0.0时,只需要在这个版本最后一个提交记录上打上标签,标签名就叫"V1.0.0上线版“,当然你也可以不选择推送标签到远程仓库,点击添加,标签就生成成功了。这样在寻找历史版本的过程就顺利多了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ww2JOMeh-1626414812430)(Git+SourceTree.assets/st39.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7ecCkIj-1626414812430)(Git+SourceTree.assets/st40.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJWg5Jmt-1626414812430)(D:\gongzuo\TrainCamp_caitiancheng_BasicLearn\Git+SourceTree\picture\st41.png)]
9.删除标签
删除标签是右键有标签的提交,点击删除即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZhaiOLS-1626414812431)(Git+SourceTree.assets/st42.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W09btndX-1626414812432)(D:\gongzuo\TrainCamp_caitiancheng_BasicLearn\Git+SourceTree\picture\st43.png)]
(6)综合
最后本地仓库和远程仓库的状态。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qyzV71Vg-1626414812432)(Git+SourceTree.assets/st48-1626336435608.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEzp4MVV-1626414812433)(Git+SourceTree.assets/st49.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O0yRuJL6-1626414812433)(Git+SourceTree.assets/st50.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FDifyxkw-1626414812434)(Git+SourceTree.assets/st51.png)]
片转存中…(img-ww2JOMeh-1626414812430)]
[外链图片转存中…(img-W7ecCkIj-1626414812430)]
[外链图片转存中…(img-cJWg5Jmt-1626414812430)]
9.删除标签
删除标签是右键有标签的提交,点击删除即可。
[外链图片转存中…(img-kZhaiOLS-1626414812431)]
[外链图片转存中…(img-W09btndX-1626414812432)]
(6)综合
最后本地仓库和远程仓库的状态。
[外链图片转存中…(img-qyzV71Vg-1626414812432)]
[外链图片转存中…(img-zEzp4MVV-1626414812433)]
[外链图片转存中…(img-O0yRuJL6-1626414812433)]
[外链图片转存中…(img-FDifyxkw-1626414812434)]
2509





