问题标签 [git-stage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
757 浏览

git - 为什么“git rebase”会在阶段和工作副本中留下相反的修改集?

我使用 git-svn 作为 svn 客户端。我不时遇到以下问题。

  1. 我从本地 git 分支中的几个提交开始,一个空的阶段和一个干净的工作副本。

  2. 我在 Windows 命令行中键入“git svn rebase”以获取团队的修改并将我的提交放在他们之后以保持线性历史记录(这是使用 git-svn 所必需的)

  3. 一切顺利,团队的内容被获取,然后我的提交被重新设置,但是......

    我最终在工作副本中进行了修改,并且在阶段中修改了文件,并且工作副本的修改与阶段中的修改完全相反。

我通常通过取消暂存阶段中的所有内容来解决此问题,这会恢复工作副本中的修改,这很好,但我真的很想了解这里发生了什么。

问题:这是一个错误,还是我不理解 git rebase 的问题?

注意:我后来在使用“git svn fetch”和“git rebase”时遇到了问题。

注意:我在具有大型 svn 存储库(10000+ 个文件,150000+ 个修订版)的 Windows 上使用 git,并且我还使用 git-extensions。编辑:我只使用它来探索存储库并提交。我从 Windows 命令行执行任何其他操作。

编辑:根据评论之一的要求,这里有两个屏幕截图可以帮助理解问题。第一个是工作副本的内容,第二个是阶段的内容。您可以很容易地看到两者是完全相反的:

工作副本: 在此处输入图像描述

阶段(还原工作副本修改,非常直观:相同的图像,红色和绿色交换): 在此处输入图像描述

编辑:我只是在一个非常简单的情况下重现了这个问题:我的提交只修改了一个文件,在“git svn rebase”期间获取的新提交很少,并且没有一个影响修改后的文件。我检查了“gitk --all”。它说的与 git-extensions 和“git status”完全相同。这是 gitk 的输出。我们从下往上看:

  • 最后 3 行是变基时获取的 3 个提交。他们都没有碰我的文件。
  • 顶部的第 3 行显示了我在 rebase 后的提交:一切都很好,它添加了应该添加的内容并删除了应该删除的内容。
  • 第 2 行显示索引的内容:它包含恢复我的提交的修改
  • 第一行显示了工作副本的内容:它包含与我的提交相同的修改,IE 恢复索引中的修改。

在此处输入图像描述

编辑:这是.git发生问题的“git svn rebase”之后我的目录的内容:

编辑:如果您有兴趣跟踪此问题,我在 git@vger.kernel.org 邮件列表上报告了一个错误,主题为“[git-svn] [错误报告] git svn rebase 后索引处于奇怪状态”。

0 投票
3 回答
58 浏览

git - 您可以在 git diff 期间暂存文件(或至少是文件的一部分)吗?

在暂存文件之前,我喜欢执行 agit diff以检查一切是否正常。当我垂直遍历一个差异时,我会记下每个“可以”用于暂存的文件。如果它是一个特别长的差异,我发现很难跟踪哪些是好的,所以我倾向于每隔一段时间退出差异并尽我所能。这有点乏味。

有没有办法改进这个工作流程?显然,一开始就不应该让他们的差异变得很大,但有时事情不会像那样进行(例如,更改跨多个文件调用的方法的方法签名)。

例如,是否可以将所有内容从当前活动的git diff“会话”的“顶部”到您所在的差异中的当前点?这样我就可以在不退出差异和失去思路的情况下继续进行演示。

0 投票
4 回答
1318 浏览

git - Git反转暂存区

我的暂存区发生了变化,而其他的还没有暂存(有些文件在暂存区内外都有变化)。我想反转暂存区的内容和未暂存的更改。是否存在一个快捷方式来做到这一点,而无需执行更复杂的操作,如本地分支提交、差异或存储 [等]?谢谢。

0 投票
2 回答
615 浏览

git - How to view a file including git-staged changes

git diff --staged allows you to view changes between HEAD and the staged changes.

How do I view the full file as it would exist in HEAD if I were to commit the staged changes? How do I view a specific subset of lines from it?

0 投票
2 回答
15925 浏览

git - Git adding "unchanged" files to the stage

For a project I'm working on, I want to use:

to add some files to the stage. The problem is that Git thinks these files are unchanged from the last commit, so they are ignored. However, I personally changed the file, but Git still sees the file as unchanged.

How can I "forcefully" add that single file to my repository?

0 投票
1 回答
2401 浏览

git - Smartgit/hg 未列出更改的文件

我一直在尝试使用 SmartGit/Hg(在 Ubuntu Linux 上,希望 SourceTree 可用)。只是留在大师,因为只有我在工作,我想在理解 SmartGit 中的分支之前克服这个障碍。

我将它放在“主”视图中,并查看“文件”部分。除了“未更改的文件”之外,所有右上角的按钮都被选中。然后我更改的文件没有列出!

但是,如果我选择“未更改的文件”按钮,我可以看到我已更改的文件并选择它。下面的“Changes”部分可以看到“index(staged state)”和“HEAD(repository state)”之间的文件有变化。那么为什么文件列表不能注意到它已经被改变了!!!

请帮帮我。对于一个体面的工作流程,我需要能够查看哪些文件已更改的列表,以便我可以查看/选择要暂存的文件然后提交。

有可能我改变了一个设置,但不知道在哪里。这个程序对我来说还不是一个很好的 GUI,它让我认真考虑为 1 个程序购买一台 Windows 笔记本电脑!

0 投票
1 回答
332 浏览

git - 吉特。撤消工作目录中的分段更改,保持分段区域不变

假设我进行了一些更改:

现在我想快速测试我的程序而无需更改 2。git reset head -p; git stash我可以完全摆脱更改 2。但是我不想取消它,这只是一个测试,我还是想稍后提交。因此,我想在我的工作目录中进行与更改 2 的更改相反的更改。结果应该是这样的:

我如何实现这一目标?

0 投票
3 回答
13033 浏览

git - 如何撤消 git 中的最后一次提交,但保持我的更改未暂存?

我已经做出了承诺,但现在很难看到我都改变了什么。我当然可以做一个 git diff,但我宁愿撤消最后一次提交并保持我的所有更改都完好无损,以便我的 IDE (PyCharm) 简单地向我显示哪些文件已更改。

那么有没有办法撤消最后一次提交(真正删除它)但仍然保持我的更改完好无损?欢迎所有提示!

0 投票
5 回答
23492 浏览

git - git 撤消删除的文件

我是 git 新手。我有来自远程的结帐文件。我不得不从 git repo 中删除几个文件。我没有执行git rm命令,而是发出了 unixrm -rf folder命令。我需要还原删除命令,然后执行git rm命令。如何恢复到最新的代码?

注意:我还没有提交暂存文件。out ofgit status是删除的文件列表,格式如下:

0 投票
1 回答
149 浏览

git - Git:如何“重演”上演的相同台词?

我已经用git add --patch.

我后来修改了这些行。

我怎么能在不再次选择它们的情况下上演相同的线条git add --patch