【问题标题】:Can I edit two files then make one commit using GitHub Web-based editor?我可以使用 GitHub 基于 Web 的编辑器编辑两个文件然后进行一次提交吗?
【发布时间】:2013-07-22 20:37:52
【问题描述】:

GitHub 具有基于 Web 的文件编辑功能。但是,似乎在编辑一个文件后,我必须先提交对该文件的更改,然后才能继续。有没有一种方法可以编辑两个或多个文件,然后对它们的所有更改进行一次提交?

我认为这会更好,因为太多不必要的提交很烦人。

【问题讨论】:

标签: git github git-commit


【解决方案1】:

GitHub Web Flow 支持每次提交一个文件。要将多个文件添加到单个提交中,您需要在本地克隆存储库,编辑文件,然后提交和推送。

命令行是这样的:

  1. cd到目录

  2. 使用

    暂存所有修改过的文件
    git add <file-1> <file-2> <etc>
    
  3. 提交

    git commit -m'<your-message>
    

    或者如果你想启动一个外部编辑器

    git commit
    
  4. 使用

    发送历史记录/提交
    git push
    

【讨论】:

  • 我已经学会了如何在将 repo 克隆到本地后提交和推送。但是,正如问题中所述,我对基于 Web 的编辑器感到担忧,因为有时我只想在我的 Google Chrome 中做一些事情。如果他们在 GitHub Web Flow 中支持多个文件,那就太好了。
  • 不是我想要的,但至少答案很明确:“GitHub Web Flow 支持每次提交一个文件。”
【解决方案2】:

有一个基于网络的解决方法:

  1. 创建一个临时分支,切换到它;
  2. 编辑多个文件,分别提交每个文件;
  3. 提出拉取请求;
  4. Merge pull request按钮下,选择Squash and merge(如果repo允许的话),然后确认合并;
  5. 删除临时分支。

我在不想安装 git 的 PC 上使用此方法。

【讨论】:

  • 效果很好。只有一件重要的事情,当您验证和合并拉取请求时,请确保选择 Confirm Squash and Merge,而不是 Confirm Merge(默认)。 help.github.com/articles/about-pull-request-merge-squashing
  • 你能扩展第 3 步和第 4 步吗?我想在我的 repo 分支中编辑 2 个文件,然后提交一个 PR,其中只有一个提交和两个编辑。如何提出拉取请求(针对我自己的分叉?)并合并它?我没有对原始存储库的写入权限。
  • 1.创建你的分叉和临时分支。 2. 编辑临时分支上的文件。 3.1。 Squash 提交到您的主分支。 3.1.1。在临时分支上,点击“创建拉取请求”并确保“基地”是您的主人。创建“本地”拉取请求。 4. 点击“合并拉取请求”并填写提交信息。点击绿色按钮“确认壁球并合并”。现在你在你的'master'上有了2个编辑过的文件的单次提交。 5. 要将拉取请求传播到来源,请创建拉取请求并将原始存储库指定为“基础”。创建拉取请求后,作者将能够查看和合并您的更改。
  • 但是,我认为你不需要这个临时分支的技巧,你想提交到另一个存储库。只需根据需要更改 fork 中的文件,然后向原始存储库填写拉取请求。如果需要,原始维护者可能会合并您的拉取请求并压缩提交。
  • 问的问题“有没有办法我可以编辑两个或多个文件然后进行一次提交” - 答案将导致多次提交,加上一次合并提交。压缩而不是合并可以工作,但在编辑从没有写入权限的存储库发出的拉取请求中的文件时不可用。
【解决方案3】:

@VictorIstomin 和 @MarCnu 所说内容的附录:

如果您想编辑多个文件名而不是这些文件的内容,只需按照 Victor 的说明进行操作,但您不必“确认压缩和合并”。您可以点击“确认合并”(这应该是唯一的选择,因为您实际上并没有编辑文件内容。

这个问题已经很好地回答了,只是想为任何可能正在更改文件名的未来观众澄清这一点,这是我在 GitHub 中经常做的事情。

【讨论】:

    【解决方案4】:

    是的,当您已经在 GitHub 的 Web 浏览器视图中编辑了第一个文件时,有一种方法可以编辑 2 个文件。它基于此处的说明:

    https://webapps.stackexchange.com/questions/95940/how-can-i-change-multiple-files-and-submit-them-in-one-pull-request-on-github

    总结和澄清的步骤是:

    1. 通过单击另一个用户存储库中的编辑图标来编辑您的第一个文件。在您的第一次提交中保存此编辑。 GitHub 会自动为你创建一个新的分支/fork,比如“patch-1”。
    2. 暂时不要创建拉取请求。
    3. [这部分最难,因为它不明显] 转到您个人资料中的存储库列表,地址为github.com ➔ click icon at top-right ➔ Your Repositories。然后转到您刚刚创建的分叉存储库,并切换到“patch-1”分支。
    4. 继续对另一个文件进行更改,并将其提交到您的“patch-1”分支。完成后,单击顶部附近的“Pull Requests”选项卡,然后单击 Compare & Pull RequestCreate Pull Request。您应该会在此 Pull Request 中看到您的 2 次提交。
    5. 如果您没有看到“创建拉取请求”按钮,请在您的网络浏览器中打开这样的 URL:https://github.com/TargetPerson/TargetGitRepo/compare/master...MyGithubUsername:patch-1
    6. 这将显示一个视图,用于将您的更改与其他用户存储库中的原始目标分支进行比较。然后按 Create Pull Request 按钮。

    【讨论】:

    • 在第 4 点,我发现了两个“Pull requests”按钮,我必须单击下方的一个,然后单击“New Pull Request”才能到达比较页面。然后我选择了“patch-1”分支并继续。
    【解决方案5】:

    假设有问题的仓库是https://github.com/repoUsername/repoName

    1. 通过单击存储库页面顶部的 Fork 按钮来分叉存储库。

    1. 在您的 repo 分支中通过基于 Web 的文件编辑器编辑任意数量的文件。单独提交每个文件。

    2. 转到https://github.com/repoUsername/repoName/pulls,然后按绿色的大New pull request 按钮。

    1. 在下一页点击compare across forks链接。

    1. 然后在Choose a Head Repository 字段中选择您的分叉

    1. Create pull request 按钮将出现。点击它。

    1. 输入拉取请求的标题和描述,然后再次单击Create pull request 按钮。

    【讨论】:

      【解决方案6】:

      如果您不希望创建临时分支并合并更改(这会导致存储库中出现一堆仅用于合并提交的拉取请求),您可以上传多个(修改过的)文件,GitHub 会与他们一起创建一个提交。

      请注意,上传文件时,文件将被上传到 GitHub 上可见的当前文件夹中。

      这种方法的缺点是,当你需要修改不同目录下的文件时,你要么上传你所有的项目文件(这会很慢),要么创建一个项目的骨架目录并将那里修改了文件(以便 GitHub 修改正确的文件而不创建新文件)。

      使用此方法时要小心,因为在您提交文件之前,GitHub 不会向您显示您的更改。

      【讨论】:

        猜你喜欢
        • 2023-04-03
        • 2011-08-22
        • 2020-12-21
        • 2020-08-18
        • 1970-01-01
        • 2020-08-03
        • 2019-10-29
        • 2022-01-23
        • 1970-01-01
        相关资源
        最近更新 更多