Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在git推送之前,如何将本地提交整合到每个文件中?_Git_Github - Fatal编程技术网

在git推送之前,如何将本地提交整合到每个文件中?

在git推送之前,如何将本地提交整合到每个文件中?,git,github,Git,Github,使用git已经有一段时间了,但只提供了一些基本功能 为了切换到Textmate并保持Eclipse所具有的酷本地历史功能,我做了。这很有效 但现在我正在一个拥有私有github存储库的团队中工作。我不想用我在当地的全部无用的承诺来污染团队 我知道有一些工具可以编辑我的提交,但是: git-rebase-i 你让我重新设定基址,但没有告诉我你想要哪个分支 根据 剪断 哪个部门?:) 所以我想知道你有没有关于如何管理所有这些的技巧。我想将一个文件的所有提交合并为一个提交最大值,并编辑消息,使其显示有

使用git已经有一段时间了,但只提供了一些基本功能

为了切换到Textmate并保持Eclipse所具有的酷本地历史功能,我做了。这很有效

但现在我正在一个拥有私有github存储库的团队中工作。我不想用我在当地的全部无用的承诺来污染团队

我知道有一些工具可以编辑我的提交,但是:

git-rebase-i

你让我重新设定基址,但没有告诉我你想要哪个分支 根据

剪断

哪个部门?:)

所以我想知道你有没有关于如何管理所有这些的技巧。我想将一个文件的所有提交合并为一个提交最大值,并编辑消息,使其显示有用的内容

谢谢

git rebase -i
希望您告诉它要处理的提交范围。最常见的用法是

git rebase -i HEAD~4
这将允许您“编辑”当前签出分支中的最后4个提交

我不知道你为什么要“按文件”这样做。此外,“rebase-i”会让你头疼,如果你有合并。根据我的推断,你可以这样做:

将当前提交设置为更改开始时,但保持工作目录不变

git reset --mixed HEAD~10
如果您有10次提交更改,这将使您回到开始的位置。“混合”将确保您不进行任何更改,并且索引是干净的

然后,将更改提交到每个单独的文件:

git add path/to/one/of/the/files/file.txt
git commit -m "added feature X to file.txt"
对其余文件重复此操作。使用
git状态沿途检查


推送时,如果已经推送了其中一些提交,则可能需要添加-f选项(--force)。如果其他人正在处理这些提交,让他们知道是你做的。他们将不得不重新设置更改的基础。

可能会从您的Textmate save中取消钩取
git commit
,并在您愿意的时候进行提交?事实上,每次保存一次提交并不是一个好主意。一个人可能每分钟节省10次,这会创建大量不完整、无用和误导性的提交。我宁愿在我的个人存储库中有大量不完整、无用/误导性的提交,也不愿在错误覆盖文件时丢失所有内容。但我的目标是不强制整个团队进行这些提交:)每次保存提交可能并不理想,并且会导致后续大量
rebase-i
挤压和拆分提交。尽管如此,它仍然比另一个极端要好得多:很少提交,最终将十几个不同的更改合并到一个提交中。我希望有一个解决方法,但可能没有。遗憾的是,我有一大堆这样的项目做得很好,但我可能不得不解开保存的东西。或者至少不是默认值。+1,还有一些注释:
--mixed
git reset
的默认值,如果您已经推送了其中一些提交,那么您可能不应该尝试编辑它们。听起来你和其他人可能不是Git最有经验的人,强制更新是一个很好的迷惑人的方法。(另供参考亚当:)我按照你的建议做了:“$git rebase-I HEAD~4致命:需要一个修订无效上游HEAD~4”>>我不确定你为什么要“按文件”这样做@joedevon:
HEAD~4
只有在存储库中的提交少于四次时才应无效。查看一下你的历史记录,确保一切正常,最糟糕的情况是,将其粘贴到SHA1中。一旦你解决了这个问题,你也可以试着四处搜索关于交互式rebase的其他问题(或者只是阅读文档),因为它是一个非常强大的工具,提供完整的描述超出了这个问题/答案的范围。谢谢@Jefromi。事实上,我在一个测试目录中,这就是它失败的原因。另外,在这里提问之前,我确实阅读了其他问题和一些文档,但这有点让人不知所措(我今天需要推动git)。只是想要一些更大的方向。将定义。阅读更多的文档。