- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 git 目录有这种情况:
ProgSoul@PROGSOUL-LENOVO:~/esercizio3_2$ git status
Sul branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: A
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: A
Untracked files:
(use "git add <file>..." to include in what will be committed)
B
在这种情况下我有:
我的老师要我暂时停止工作,创建一个BUGFIX文件,提交并恢复我以前的情况。
我是通过这些命令实现的:
git stash --include-untracked
touch BUGFIX
git add BUGFIX
git commit -m "Aggiunto file BUGFIX"
git stash pop --index
使用这些命令,我保存了我的初始情况,并在提交修复后恢复了它。我的老师也要求我在不使用 git-stash 的情况下达到这个目标。
我遵循了存储文档中的帮助:
git checkout -b WIP
git commit -a -m "WIP"
git checkout master
touch BUGFIX
git add BUGFIX
git commit -a -m "BUGFIX"
git checkout WIP
git reset --soft HEAD^
使用 git reset --soft 我恢复了索引,但未暂存提交的更改已丢失。
使用 git reset --mixed 我恢复了未暂存提交但索引已丢失的更改。
在不使用 git stash 的情况下提交修复后,如何恢复相同的初始状态?
最佳答案
让我们这样试试:
问:如何在 Git 中保存一些东西?
答:提交。
问:git stash
怎么样,它似乎可以保存东西,它是如何管理的?
答:它 promise 。
问:但是它没有在我的分支上提交任何内容。1
答:他们在特殊的“stash ”处,不是分支机构。但它们仍然是提交。
1从技术上讲,这不是问题。 :-)
这可以说是 Git 的底线:提交可以保存东西。否则,您所拥有的只是工作树中的内容,以及索引(暂存区)中的内容。当您运行 git commit
时,暂存区的东西会永久存在。工作树的内容从不是永久的:您必须将其复制到暂存区然后提交。
这就是 git stash
所做的。它实际上进行了两次 提交,一次针对当前索引,一次针对工作树。2 它只是在分支以外的其他地方进行提交,使用名称stash
以找到它们。
不过,没有什么能阻止您做出自己的 promise 。进行两次或多次提交然后必须撤消它们只是有点痛苦,这就是 git stash
存在的原因。
2当您像以前那样使用 --include-untracked
时,它实际上进行了三次 提交:一次用于索引,一次用于索引用于工作树,第三个用于未跟踪文件。第三次提交非常棘手,无论是制作还是恢复。 stash 脚本使用临时索引而不是尝试在主索引中完成工作。
一般来说,每个 Git 存储库都独立于所有其他 Git 存储库,但可以与任何相关的 Git 存储库对等。因此,您可以将一个存储库克隆到另一个存储库,从而获得另一个可以工作的工作树。该工作树还带有自己的(单独的)索引/暂存区。
如果您在本地进行克隆,在您的本地文件系统上,Git 通常能够避免大量的存储库文件复制。因此,虽然这看起来很昂贵,但通常还不错。主要问题是您现在有两个存储库要记住提交,并且您必须在它们和/或您最初从中克隆的任何上游之间获取和/或推送。
git worktree add
(仅限 2.5 和更新版本)在 Git 2.5 之前,有一个“贡献的”脚本来制作备用工作树。从 2.5 开始,它得到了官方支持,尽管从那时起修复了一些重要的错误(即使现在它也有一些粗糙的边缘)。您现在可以运行 git worktree add
来创建将使用不同 分支但共享底层存储库的新工作树。
共享一个底层存储库的两个工作树不得使用相同的分支。 (这是因为 Git 存储“当前分支”和“当前提交”的想法的方式,以及当您进行新提交时 Git 推进当前分支的方式。)如果您的目标是,然而,是在一些其他分支而不是您现在正在处理的分支中进行修复,这正是您所需要的。
关于git - 如何在不使用 git-stash 的情况下保存正在进行的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226396/
我是 Java 新手,这是我的代码, if( a.name == b.name && a.displayname == b.displayname && a.linknam
在下面的场景中,我有一个 bool 值。根据结果,我调用完全相同的函数,唯一的区别是参数的数量。 var myBoolean = ... if (myBoolean) { retrieve
我是一名研究 C++ 的 C 开发人员: 我是否正确理解如果我抛出异常然后堆栈将展开直到找到第一个异常处理程序?是否可以在不展开的情况下在任何 throw 上打开调试器(即不离开声明它的范围或任何更高
在修复庞大代码库中的错误时,我观察到一个奇怪的情况,其中引用的动态类型从原始 Derived 类型更改为 Base 类型!我提供了最少的代码来解释问题: struct Base { // some
我正在尝试用 C# 扩展给定的代码,但由于缺乏编程经验,我有点陷入困境。 使用 Visual Studio 社区,我尝试通过控制台读出 CPU 核心温度。该代码使用开关/外壳来查找传感器的特定名称(即
这可能是一个哲学问题。 假设您正在向页面发出 AJAX 请求(这是使用 Prototype): new Ajax.Request('target.asp', { method:"post", pa
我有以下 HTML 代码,我无法在所有浏览器中正常工作: 我试图在移动到
我对 Swift 很陌生。我如何从 addPin 函数中检索注释并能够在我的 addLocation 操作 (buttonPressed) 中使用它。我正在尝试使用压力触摸在 map 上添加图钉,在两
我设置了一个详细 View ,我是否有几个 Nib 文件根据在 Root View Controller 的表中选择的项目来加载。 我发现,对于 Nibs 的类,永远不会调用 viewDidUnloa
我需要动态访问 json 文件并使用以下代码。在本例中,“bpicsel”和“temp”是变量。最终结果类似于“data[0].extit1” var title="data["+bpicsel+"]
我需要使用第三方 WCF 服务。我已经在我的证书存储中配置了所需的证书,但是在调用 WCF 服务时出现以下异常。 向 https://XXXX.com/AHSharedServices/Custome
在几个 SO 答案(1、2)中,建议如果存在冲突则不应触发 INSERT 触发器,ON CONFLICT DO NOTHING 在触发语句中。也许我理解错了,但在我的实验中似乎并非如此。 这是我的 S
如果进行修改,则会给出org.hibernate.NonUniqueObjectException。在我的 BidderBO 类(class)中 @Override @Transactional(pr
我使用 indexOf() 方法来精细地查找数组中的对象。 直到此刻我查了一些资料,发现代码应该无法正常工作。 我在reducer中尝试了上面的代码,它成功了 let tmp = state.find
假设我有以下表格: CREATE TABLE Game ( GameID INT UNSIGNED NOT NULL, GameType TINYINT UNSIGNED NOT NU
代码: Alamofire.request(URL(string: imageUrl)!).downloadProgress(closure: { (progress) in
我是一名优秀的程序员,十分优秀!