Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.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
Bash 什么';Git中暂存区的用途是什么?_Bash_Git_Github_Repository_Git Bash - Fatal编程技术网

Bash 什么';Git中暂存区的用途是什么?

Bash 什么';Git中暂存区的用途是什么?,bash,git,github,repository,git-bash,Bash,Git,Github,Repository,Git Bash,git add.或git add将其添加到暂存区有什么意义?为什么不干脆git提交-m“blabla” 我不理解暂存区的价值。如果您认为暂存是无用的,那么您可能也知道git和软件开发的全部功能。暂存意味着您希望将这些文件提交到您当前的分支。有时,您可能不希望提交某些文件,因此这些文件将不会暂存以进行提交 例如:-某些特定于系统的默认配置,因此您可能不希望将这些配置文件提交到每个人都在使用这些配置文件的分支。 我希望这能消除你的疑虑!:-) 在Git中有许多登台的用途。以下列出了一些: 暂存帮助您

git add.或git add将其添加到暂存区有什么意义?为什么不干脆
git提交-m“blabla”


我不理解暂存区的价值。

如果您认为暂存是无用的,那么您可能也知道git和软件开发的全部功能。暂存意味着您希望将这些文件提交到您当前的分支。有时,您可能不希望提交某些文件,因此这些文件将不会暂存以进行提交

例如:-某些特定于系统的默认配置,因此您可能不希望将这些配置文件提交到每个人都在使用这些配置文件的分支。
我希望这能消除你的疑虑!:-)

在Git中有许多登台的用途。以下列出了一些:

  • 暂存帮助您将一个大的更改拆分为多个提交——假设您处理了一个大的ish更改,涉及很多文件和许多不同的子任务。实际上,您并没有提交任何这些内容--正如他们所说,您“在区域中”,并且您不想考虑以正确的方式拆分提交内容。(而且你足够聪明,不会把整件事都搞砸了!)。 现在更改已经全部测试完毕并正常工作,您需要正确地提交所有这些内容,在几个干净的提交中,每个提交都集中在代码更改的一个方面。 使用索引,只需阶段化每一组更改并提交,直到没有更多的更改挂起。如果您也喜欢GitGUI,那么它确实可以很好地工作,或者您可以使用GitAdd-p,或者对于较新的git,使用GitAdd-e

  • 暂存有助于审查更改-暂存可帮助您在审查复杂提交时“检查”单个更改,并将注意力集中在尚未通过审查的内容上。让我解释一下。在提交之前,您可能会使用git diff来审查整个更改。如果您在审查每个更改时对其进行分级,您会发现您可以更好地将精力集中在尚未分级的更改上。GitGUI在这里很棒。它的两个左侧窗格分别显示未分级和分级更改,您只需单击文件名左侧的图标即可在这两个窗格(分级/取消分级)之间移动文件。更好的是,您甚至可以对文件进行部分更改。在GitGUI的右窗格中,右键单击您批准的更改并选择“StageHunk”。现在只进行更改(而不是整个文件);事实上,如果同一个文件中有其他未老化的更改,您会发现该文件现在同时显示在左上窗格和左下窗格中

  • 当合并发生冲突时,暂存会有所帮助。当合并发生时,干净地合并的更改会在暂存区域以及工作树中更新。当您执行git diff时,或者在git gui的左上窗格中,只有未干净合并(即导致冲突)的更改才会显示。同样,这可以让您将注意力集中在需要注意的事情上——合并冲突

  • 暂存可帮助您保留多余的本地文件-通常,不应提交的文件会放入.gitignore或本地变量.git/info/exclude中。但是,有时您希望对文件进行无法排除的本地更改(这不是好做法,但有时可能发生)。例如,可能您升级了构建环境,现在需要一个额外的标志或兼容性选项,但是如果您将更改提交到Makefile,其他开发人员将遇到问题。当然,您必须与您的团队讨论并制定一个更持久的解决方案,但现在,您需要在工作树中进行更改才能完成任何工作!另一种情况可能是,您需要一个临时的新本地文件,而不需要使用忽略机制。这可能是一些测试数据、日志文件或跟踪文件,或者是一个临时shell脚本,用于自动化一些测试。。。无论什么在git中,您所要做的就是永远不要准备那个文件或那个更改。就这样

  • <强>分级可以帮助你进行小的变化——假设你处于一个有点大的变化中,你被告知一个非常重要的bug需要尽快修复。通常的建议是在单独的分支上执行此操作,但假设此修复实际上只是一两行,并且可以同样轻松地进行测试,而不会影响您当前的工作。有了git,您可以快速做出并仅提交更改,而无需提交您仍在处理的所有其他内容。同样,如果您使用GitGUI,左下角窗格中的任何内容都会被提交,所以只需确保只有更改到达并提交,然后推


    值得将Git如何处理这个问题与Mercurial如何处理这个问题进行比较,Git让您了解并使用暂存区域。在Mercurial中,您的工作完全按照您的建议进行:您只需运行
    hgcommit
    ,Mercurial就会找出您所更改的内容并进行提交。您确实需要添加一个新文件,但是如果您只是更改现有文件,没有什么特别的事情要做:您更改它们,然后提交,就完成了

    Mercurial的行为似乎(在我看来)更加新,用户友好。Git实际上通过使用
    Git commit-a
    可以让您获得大部分相同的效果。也就是说,您只需将
    -a
    添加到您将要使用的任何其他选项中,Git将做与Mercurial几乎相同的事情。但这有点像拐杖,因为最终,你会发现Git所做的事情非常令人费解,除非你知道暂存区

    显示了使用Git暂存区的多种方法。但是如果你退一步,比较Mercurial和Git,我认为你可以看到更多的真实情况

    请记住,任何版本控制系统(VCS)的工作都是让您检索每个提交的版本