StGit教程_CN
- 格式:pdf
- 大小:250.68 KB
- 文档页数:12
Git版本控制系统的使⽤⽅法Git版本控制系统的使⽤⽅法⼀、Git简介Git是⼀个分布式版本控制系统,是⽤来追踪计算机⽂件的变化的⼯具,也是⼀个供多⼈使⽤的协同⼯具。
每个⼈都可以拥有⼀个完整的版本库。
分布式版本控制系统的⼏乎所有操作包括查看提交⽇志、提交、创建⾥程碑和分⽀、合并分⽀、回退等都可以直接在本地完成⽽不需要⽹络连接。
⼆、Git客户端的下载和安装Git官⽅客户端为Git Bash,Git bash是以命令⾏的形式来操作的,另外本使⽤⽅法中可视化软件采⽤了sourcetree,Git bash 和sourcetree的使⽤请⾃⾏选择,⽤户需先下载Git和sourcetree。
1.Git的下载和安装:1) 官⽹地址:https:///doc/3bafbcbf42323968011ca300a6c30c225901f0b6.html /进⼊Git官⽹,由于电脑是Windows系统,选择Downloads for Windows。
2) 右键以管理员⾝份运⾏下载的安装包。
3) 选择安装路径4) ⼀直点击Next按钮,当出现下图情况时选择“Use Windows’default consolewindow”,然后点击“Next”5) 继续点击“Next”,最后点击“Install”,等待安装完成。
6) 在开始菜单中打开Git CMD在CMD中输⼊Git,出现Git的相关提⽰说明安装成功,如下图所⽰:参考⽂档:/doc/3bafbcbf42323968011ca300a6c30c225901f0b6.html /s?id=1601036689157983619&wfr=spider&for=pc2.Sourcetree下载和安装:1)⾸先,下载windows版本的企业版sourceTree。
直接进⼊官⽹https:///doc/3bafbcbf42323968011ca300a6c30c225901f0b6.html /enterprise下载2)进⼊下载保存sourceTree的⽬录,双击SourceTreeEnterpriseSetup_3.0.17.msi⽂件进⾏安装3)安装完成后会出现以下界⾯,这是需要注册Bitbucket账号,但是注册该账号需要连接外⽹,所以⽆法进⾏,下⾯是跳过注册的⽅法。
TortoiseGit使用的基本流程1. 安装TortoiseGit首先,我们需要下载并安装TortoiseGit。
你可以在官方网站上找到最新的安装文件。
安装完成后,你就可以开始使用TortoiseGit了。
2. 克隆仓库1.打开目标文件夹,右键点击空白处,选择“Git Clone…”。
2.在弹出的对话框中,填入你要克隆的仓库URL地址。
3.如果需要,可以选择指定本地目标文件夹。
然后点击“OK”开始克隆。
3. 提交更改1.修改代码或文件后,右键点击目标文件夹,并选择“Git Commit ->Master…”。
2.在弹出的窗口中,检查修改的文件和代码变动。
3.在提交消息中描述你的更改内容,并点击“OK”提交更改。
4. 推送更改1.右键点击目标文件夹,在上下文菜单中选择“Git Push…”。
2.在弹出的窗口中,选择你要推送的分支和目标仓库。
3.点击“OK”开始推送更改。
5. 更新代码1.右键点击目标文件夹,在上下文菜单中选择“Git Sync…”。
2.在弹出的对话框中,选择你要更新的分支和目标仓库。
3.点击“OK”开始更新代码。
6. 处理冲突•如果在更新代码过程中发生冲突,TortoiseGit会自动检测到冲突,并将其标记出来。
•右键点击冲突文件,选择“Resolve…”。
•在弹出的窗口中,选择如何解决冲突并点击“OK”。
7. 分支管理•右键点击目标文件夹,在上下文菜单中选择“Git Branch…”。
•在弹出的窗口中,可以选择创建、删除和切换分支等操作。
8. 查看日志•右键点击目标文件夹,在上下文菜单中选择“Git Show log”。
•在弹出的窗口中,可以查看历史提交记录和详细的提交信息。
9. 撤销更改•右键点击目标文件或文件夹,在上下文菜单中选择“Revert…”。
•在弹出的窗口中,选择要撤销的修改内容并点击“OK”。
10. 其他操作除了上述基本流程外,TortoiseGit还提供了许多其他功能,如标签管理、文件比较、合并等。
git stash 高级用法摘要:1.git stash 的基本概念2.git stash 的常用命令3.git stash 的高级用法4.git stash 的使用场景5.git stash 的注意事项正文:git stash 是Git 中的一个非常有用的功能,它可以帮助我们在工作中保存当前的进度,以便在稍后重新开始工作。
git stash 的基本概念是创建一个暂存区,将工作区和暂存区的内容保存到Git 栈中,然后在需要的时候将这些内容恢复到工作区。
git stash 的常用命令有以下几个:1.git stash:将当前的工作区的内容保存到Git 栈中。
2.git stash pop:从Git 栈中恢复最近的一次保存的内容,恢复工作区的相关内容。
3.git stash list:显示Git 栈内的所有备份。
4.git stash clear:清空Git 栈。
除了这些常用命令外,git stash 还有一些高级用法:1.使用git stash -p 命令,可以在保存暂存区时,自动将暂存区的内容推送到远程仓库。
2.使用git stash -k 命令,可以指定保存暂存区的内容的压缩级别。
3.使用git stash -u 命令,可以在恢复暂存区时,将暂存区的内容与工作区的内容合并。
git stash 的使用场景主要包括:1.在开发过程中,遇到紧急的bug 需要修改时,可以使用git stash 将当前的工作进度保存起来,然后切换到另一个分支去修改bug。
2.在开发过程中,需要临时离开工作场所时,可以使用git stash 将当前的工作进度保存起来,以便在回来后继续工作。
3.在开发过程中,需要将工作进度备份,以便在稍后的某个时间点恢复工作时,可以使用git stash 将当前的工作进度保存起来。
在使用git stash 时,需要注意以下几点:1.使用git stash 命令时,最好将暂存区的内容推送到远程仓库,以便在恢复暂存区时,可以确保工作区的内容与远程仓库的内容一致。
tortoisegit使用教程TortoiseGit 是一个开源的 Git 客户端工具,它作为 Windows 下的 Shell 扩展程序,为用户提供了方便的图形化界面来操作Git 代码管理工具。
本教程将介绍TortoiseGit 的基本使用流程,包括从安装到常用操作的操作步骤。
1. 安装 TortoiseGit- 打开浏览器,访问 TortoiseGit 的官方网站。
- 在官网下载页面选择与你操作系统版本匹配的安装包,并点击下载按钮。
- 执行安装包进行安装。
- 安装完成后,重启电脑以使安装生效。
2. 创建本地仓库- 在你的计算机上选择一个目录作为本地仓库的所在位置。
- 右键点击该目录,选择 "Git 创建仓库" 选项。
- 在弹出的窗口中,点击 "确定" 按钮来初始化本地仓库。
3. 克隆远程仓库- 打开你要克隆的远程仓库的网页页面。
- 复制仓库的 HTTPS 或 SSH 地址。
- 在本地仓库目录的空白处,右键点击,选择 "Git 克隆" 选项。
- 在弹出的窗口中,粘贴远程仓库的地址,并选择克隆到的本地目录。
- 点击 "确定" 按钮开始克隆。
4. 提交和推送改动- 在本地仓库目录中,右键点击,选择 "Git 提交" 选项。
- 在弹出的窗口中,写下你的提交消息,并选择要提交的改动的文件。
- 点击 "提交" 按钮以提交改动到本地仓库。
- 接下来,右键点击本地仓库目录,选择 "Git 推送" 选项。
- 在弹出窗口中,点击 "确定" 按钮来将改动推送到远程仓库。
5. 更新和合并改动- 在本地仓库目录中,右键点击,选择 "Git 更新" 选项。
- 在弹出窗口中,选择要更新的远程分支,并点击 "确定" 按钮。
- 接下来,右键点击本地仓库目录,选择 "Git 合并" 选项。
概述使用git命令推送代码的操作步骤1.初始化本地仓库:如果你的项目还没有关联到本地的Git仓库,需要通过以下命令进行初始化:```git init```此命令会在当前目录下创建一个隐藏的.git文件夹,用来存放Git相关的信息。
2.添加文件到本地仓库:将需要推送的文件添加到Git仓库的暂存区,可以使用以下命令:```git add <文件名>```其中,<文件名>可以指定单个文件,也可以使用通配符添加多个文件,或者使用.添加当前目录下所有文件。
3.提交代码到本地仓库:将暂存区的文件提交到本地仓库中,可以使用以下命令:``````其中,提交说明是对本次提交的描述,可以根据实际情况填写。
4.关联远程仓库:在将本地的代码推送到远程仓库之前,需要先关联远程仓库,可以使用以下命令:```git remote add origin <远程仓库地址>```其中,<远程仓库地址>是你要推送到的远程仓库的URL。
5.推送代码到远程仓库:将本地的代码推送到远程仓库,可以使用以下命令:```git push -u origin master```其中,origin是远程仓库的名称,master是分支名称。
该命令会将本地的master分支的代码推送到远程仓库的master分支。
第一次推送时需要加上-u选项,创建远程仓库与本地仓库的关联关系。
6.后续推送代码:在第一次推送代码之后,可以使用以下命令进行后续推送:```git push```该命令会将本地的修改内容推送到远程仓库。
以上就是使用Git命令推送代码的操作步骤。
通过这些步骤,你可以将本地的代码快速、安全地推送到远程仓库,实现团队协作和代码备份的目的。
【推荐】TortoiseGit⼊门教程考虑到CVS的⼀些局限性,最近和同事在公司推⾏Git。
其实,如果推⾏SVN的化,可能推⾏的难度会降低很多。
不过lark说既然推⾏⼀个新的版本管理⼯具,总要花费⼀定的时间进⾏培训、部署、转换。
⽽推⾏Git和SVN的代价不如想象中差距那么⼤。
因此,不如就多花些精⼒推⾏Git ,可以带来更多的好处。
这个想法说服了我。
然后就开始筹备了。
我发现⽹上很多git教程对⼀些基础命令(⽐如git-reset)的介绍还是不够清楚。
另外,介绍git1.5的少,介绍git1.4的多。
此外,对于如何基于Git合作开发,介绍的内容也是少之⼜少。
因此,决定写⼀份教程,以减少在公司推⼴Git的培训代价。
其实我也是⼀个Git的新⼿。
写这份教程也是我⾃⼰学习和摸索git的过程,其中基于Git进⾏合作开发的模式参考了CVS,应该是很初级的合作模式。
但是当前⾃⼰也只能做到这⼀步了。
教程所述都是⾃⼰通过试验验证的。
⾄少可以满⾜公司基本的合作开发。
教程写完后,谢欣说可以放到blog与⼤家共享。
我觉得是个不错的主意。
⼀⽅⾯我觉得这个⽂档应该可以给git的新⼿⼀些帮助,另⼀⽅⾯也欢迎git的⼤⽜指点。
这⾥要感谢《Git 中⽂教程》的作者。
还有概述中关于git的优点描述拷贝了⽹络上某位⼤⽜的原话,但是拷贝的出处也是转载的,就在这⾥谢谢那位我不知名⼤⽜了。
下⾯就开始了。
1. 概述对于软件版本管理⼯具,公司决定摒弃CVS⽽转向Git了。
为什么要选择Git?你真正学会使⽤Git时,你就会觉得这个问题的回答是⾮常⾃然的。
然⽽当真正需要⽤⽂字来回答时,却觉得⽂字好像不是那么够⽤。
咳,该则么回答呢?其实,关键的问题不在于如何回答这个问题。
问题的关键是公司已经决定使⽤它了。
那么,我们的程序员们!请开动你们的浏览器,请拿出你的搜索引擎⼯具,去⾃⼰发掘答案吧。
在这⾥,我只能给你们⼀个最朦胧的感觉。
Git和 CVS、SVN不同,是⼀个分布式的源代码管理⼯具。
FESCO Adecco公司内部自建系统GIT代码版本库操作手册及管理规范版本<1.0>文档版本历史1.1刘传宏2016-02-16修正文档中对各版本库的定义及概念【目录】1概述 (4)1.1编写目的 (4)1.2适用范围 (4)1.3名词解释 (4)2GIT操作使用说明 (5)2.1GIT工具的安装及权限开放申请 (5)2.2GIT工具的使用 (6)2.2.1从GIT导入项目 (6)2.2.2创建分支 (11)2.2.3代码提交 (12)2.2.4版本切换 (14)2.2.5代码同步 (14)2.2.6其他 (15)3GIT版本库管理规范 (15)4GIT版本结构图 (17)5GIT代码管理执行流程图 (18)1概述1.1 编写目的本文主要用于对公司内部自主研发的系统进行代码的版本管理,同时指导公司内部开发人员使用GIT工具进行统一的管理规范。
本文所形成的规范将作为IT部门开发的标准流程进行管控,不定时的进行线上环境的抽查,各项目架构师也应当以此文进行严格的版本管理及执行监督。
1.2 适用范围所有公司内部自主研发的项目。
1.3 名词解释UAT环境:用于用户做验收时进行测试的环境,其中数据均为线上生产数据的备份,在未约定与用户进行验收测试的情况下,不对业务部门开放。
测试环境:包含所有开发代码的环境,用于提供用户进行培训、演示等用途的临时环境,数据为加密及改版过的测试数据。
PRO分支:用于执行ANT脚本进行自动发布的GIT环境,此处的代码必须与生产环境完全保持一致。
UAT分支:用于保证系统的完整性,与PRO分支除数据库配置文件不同外,必须完全一致。
GIT分支:由开发工程师根据需求所建的分支,由开发工程师从本地GIT 资源库推送至公司统一的GIT版本资源库。
测试分支:由项目组自行定义的分支,用于管理测试环境的代码版本库,可根据业务部门的用户需求自行合并GIT分支进行打包整合,以提供给BU部门稳定的可用的测试环境。
git客户端管理使⽤⼯具sourcetree离线免注册登录安装教程1:找到安装⽬录下的⽂件%LocalAppData%\Atlassian\SourceTree\accounts.json2:修改accounts.json⽂件内容,具体如下:[{"$id": "1","$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity","Authenticate": true,"HostInstance": {"$id": "2","$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount", "Host": {"$id": "3","$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount", "Id": "atlassian account"},"BaseUrl": "https:///"},"Credentials": {"$id": "4","$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account","Username": "","Email": null},"IsDefault": false}]3:找到改⽂件%LocalAppData%\Atlassian\SourceTree.exe_Url_xxxxxxxxxx\3.1.2.3027\user.config,并添加如下内容:<setting name="AgreedToEULAVersion" serializeAs="String"><value>20160201</value></setting>4:打开重启即可。
gitstash用法Git是一个被广泛使用的版本控制系统,用于在团队协作的过程中管理代码的变更。
Git提供了许多功能,例如分支、合并、追踪等等。
其中一个很强大的功能是Git stash。
Git stash可以让开发人员将当前的工作暂存起来,以便在稍后的时间内返回并继续进行。
Git stash是一个特殊的命令,它提供了暂时保存变更的能力,以确保在执行其他操作时不会影响到当前的工作。
当您使用Git stash命令时,Git将会保存您的工作目录和暂存区中的所有变更,然后将它们恢复成一个干净的状态。
当您需要再次获取暂存的变更时,Git stash将会将这些变更恢复回来。
在本文中,我们将教您如何使用Git stash。
首先,我们需要理解Git stash的一些基本概念。
## 基本概念Git stash的工作方式基于三个核心概念,它们是:### 工作区(Working Directory)工作区是指当前正在开发的代码目录,也称为当前的工作树。
### 暂存区(Staging Area)暂存区是在提交变更之前存储代码变更的地方,您可以使用Git add命令来将变更添加到暂存区中。
### 存储区(Git Repository)存储区是指您的Git仓库,它包含了历史版本的记录,您可以使用Git commit命令来将暂存区中的变更提交到存储区中。
## 如何使用Git stash现在我们了解了Git stash的基本概念,让我们开始学习如何使用它。
### Git stash save您可以使用`git stash save`命令来添加新的stash项,并将当前的工作目录和暂存区保存为一个新的stash项。
这个新的项将被赋予一个默认名称,如“stash@{0}”。
```git stash save "添加新功能"```### Git stash list您可以使用`git stash list`命令来显示您的所有stash项。
git stash 用法
gitstash是一个非常有用的命令,用于保存当前工作目录的状态并将其隐藏,以便您可以在稍后的时间恢复该状态。
下面是一些常见的git stash用法:
1. 保存当前状态:使用git stash命令可以保存当前修改的状态。
2. 恢复状态:使用git stash pop命令可以恢复最近一次保存的状态。
3. 查看stash列表:使用git stash list命令可以查看所有保存的状态。
4. 删除stash记录:使用git stash drop命令可以删除指定的stash记录。
5. 应用stash:使用git stash apply命令可以将指定的stash 应用到当前的工作目录中。
6. 保存指定的文件:使用git stash push命令可以保存指定的文件。
7. 恢复指定的文件:使用git stash branch命令可以创建一个新的分支,并在其中恢复指定的stash状态。
总之,git stash是一个非常有用的命令,可以帮助您管理代码的修改并保持代码库的整洁性。
无论您是初学者还是有经验的开发人员,掌握git stash的用法都是非常重要的。
- 1 -。
原文:StGit tutorial翻译:tekkamanninja@翻译完成时间:2011年12月25日星期日V1.0目录获取帮助 (3)开始使用 (3)创建一个补丁 (3)创建另一个补丁 (4)更新提交信息 (5)冲突 (5)工作流程:开发分支 (7)工作流程:跟踪分支 (8)向上游提交补丁 (8)衍合补丁序列 (9)当你的补丁被采纳 (9)导入补丁 (10)导入一个纯补丁 (10)一次导入多个补丁 (10)从一封电子邮件中导入补丁 (10)导入满载补丁的mailbox文件 (10)其他需要提及的事项 (11)撤销操作 (11)同Git交互 (11)补丁相关 (11)模板 (12)StGit是一个命令行应用程序,提供类似Quilt的功能(比如从一个补丁栈中入栈/出栈补丁),但使用Git代替diff和patch 工具。
StGit将他的补丁作为普通的Git提交保存在Git仓库中,并提供一系列命令以各种方式操纵他们。
这个教程假设你已经熟悉Git的基本知识(如分支、提交和冲突)。
关于Git的详细信息,请参考git(1)或the Git home page。
获取帮助获取完整的StGit命令列表:$ stg help获取单个StGit子命令的快速帮助:$ stg help <cmd>获取一个StGit子命令的详细帮助:$ man stg-<cmd>(详细文档也可通过HTML 格式获得)开始使用StGit不是一个可单独使用的程序——他操作一个已用git init 或git clone创建好的Git仓库。
所以请先获取一个这样的仓库;如果你手头没有,试试下面的范例:$ git clone git://repo.or.cz/stgit.git$ cd stgit在创建StGit补丁前,你必须先运行stg init:$ stg init这个命令针对当前分支初始化StGit的元数据。
(如果还想获得另一分支的StGit补丁,你必须到另一个分支中再次运行stg init。
)注作为快捷指令,stg clone将会在执行git clone后运行stg init。
创建一个补丁现在准备创建我们的第一个补丁:$ stg new my-first-patch这将会创建一个名为my-first-patch的补丁,并且打开一个编辑器让你编辑补丁的提交信息。
(如果你没有在命令行中给出补丁名,StGit 将会自动通过提交信息的第一行生成补丁名。
)这个补丁是空的,可以通过运行stg show命令看出。
$ stg show但这不会保持太久!用你中意的文本编辑器打开一个文件(译者注:已被跟踪的文件),做些修改并保存。
此时,你的代码树中就有了本地的变更:$ stg statusM stgit/main.py然后refresh(刷新)补丁:$ stg refresh瞧 - 这个补丁不再是空的:$ stg showcommit 3de32068c600d40d8af2a9cf1f1c762570ae9610Author: Audrey U. Thor <author@>Date: Sat Oct 4 16:10:54 2008 +0200Tell the world that I've made a patchdiff --git a/stgit/main.py b/stgit/main.pyindex e324179..6398958 100644--- a/stgit/main.py+++ b/stgit/main.py@@ -171,6 +171,7 @@ def _main():sys.exit(ret or utils.STGIT_SUCCESS)def main():+ print 'My first patch!'try:_main()finally:(此处假设你已经对类似上面从Git中导出的unified diff(统一diff格式)补丁很熟悉了,但他确实已经很简单了;在这个例子中,我在文件stgit/main.py的171行附近添加了一行print 'My first patch!'代码)因为这个补丁也是一个常规的Git提交,你也可以通过常规的Git工具,例如gitk,来查看他。
创建另一个补丁我们想要做另一个改进,所有让我们为此再创建一个新补丁:$ echo 'Audrey U. Thor' > AUTHORS$ stg new credit --message 'Give me some credit'$ stg refresh注意,我们可以在命令行中提供提交信息,且在运行stg new前后编辑文件都可以。
这么一来,我们就有了两个补丁:$ stg series –description+ my-first-patch # This is my first patch> credit # Give me some creditstg series从栈底到栈顶列出所有的补丁;+意味着这个补丁已被应用,而> 表示当前(或栈顶)补丁。
如果要在栈顶补丁上做更多修改,我们只需编辑文件并运行stg refresh。
但是如果我们想要修改my-first-patch呢?最简单的方法就是pop(出栈)相应的补丁,让my-first-patch变成栈顶补丁:$ stg pop creditChecking for changes in the working directory ... donePopping patch "credit" ... doneNow at patch "my-first-patch"$ stg series --description> my-first-patch # This is my first patch- credit # Give me some creditstg series表明现在my-first-patch是栈顶补丁,这也意味着如果我们做了修改,stg refresh将会更新这个补丁。
这里的减号表明,补丁没有被应用—这意味着这个补丁被暂时搁置。
如果看下AUTHORS文件,你会发现我们原先的修改不见了;且Git工具(例如gitk)也不会显示这个修改,因为他已经被清出了Git历史。
但是只需一个简单的stg push命令就可以重载他。
$ stg push creditChecking for changes in the working directory ... doneFast-forwarded patch "credit"Now at patch "credit"注在使用stg push和stg pop时,你可以忽略补丁名参数。
如果你这样做了,你将会分别push(入栈,即应用)下一个未应用的补丁,pop(出栈,即撤销)栈顶补丁。
注最少还有两种方法更新非栈顶补丁。
一个是使用stg refresh时带上--patch参数;另一个是创建新补丁,然后用stg squash合并到其他补丁中。
更新提交信息因为StGit的功能就为了创建易读的Git历史(或者易读的补丁序列,这本质上是一回事)。
值得注意的是补丁的提交信息。
stg new在创建新补丁时会要求提供提交信息,但是随着你对补丁的不断刷新,原来的提交信息可能已经不再和补丁内容相符了。
幸运的是,编辑提交信息非常简单:$ stg edit <patch-name>除了stg edit,我们也可以在stg refresh中加上--edit参数——这样我们就可以在更新补丁的同时修改提交信息了。
具体用哪个就依你的喜好了。
注stg edit有一个--diff参数,它除了在你的编辑器中提供提交信息外,还提供差异文本。
注意,如果你修改了差异文本使得其不再适用,而这个修改会代替原先的补丁应用到文件中。
如果你不喜欢编辑差异文本,那就把--diff 作为一个你编辑提交信息时参考差异的方法。
如果补丁改动相当的大,甚至可能需要一个新补丁名,此时stg rename就派上用场了。
冲突正常情况下,当你pop(出栈)一个补丁,并做一定的修改,然后重新push(入栈),StGit会自动帮你对所有修改进行处理。
比如,我们创建两个补丁来修改不同的文件。
$ stg clone /cmarinas/stgit.git stgit$ cd stgit$ stg new first --message 'First patch'$ echo '- Do something' >> TODO$ stg refresh$ stg new second --message 'Second patch'$ echo '- Install something' >> INSTALL$ stg refresh然后将他们都pop(出栈):$ stg pop –all再将他们以相反的顺序push(入栈):$ stg push second first$ stg series+ second> firstStGit 对于重新排序这两个补丁没有任何问题,因为他们没有修改同一个文件。
并且就算我们修改了同一个文件,只有没有修改同一个部分,StGit也会工作得很好。
倘若真的修改了同一文件的相同部分,那会发生什么?让我们试试看。
$ stg popChecking for changes in the working directory ... donePopping patch "first" ... doneNow at patch "second"$ echo '- Do something else' >> TODO$ stg refresh现在,两个补丁都在TODO的末尾添加了一个新行。
这种情况下当我们试图同时应用这两个补丁时会发生什么?$ stg pushPushing patch "first" ...CONFLICT (content): Merge conflict in TODOError: The merge failed during "push".Revert the operation with "stg undo".stg push: 1 conflict(s)StGit告诉我们他无法将第一个补丁打在第二个上,他们同时修改了TODO。