【问题标题】:Add and commit changes to all git's branches with one command使用一个命令向所有 git 分支添加和提交更改
【发布时间】:2016-07-22 11:48:20
【问题描述】:

我的计算机中有一个 git 存储库,该存储库中的一个目录是一个 git 工作树,其中包含文档的 html 构建。所以树是这样的

. # <--- main branches here!
├── docs
│   └── _build
│       ├── doctrees
│       ├── html # <--- gh-pages branch here!
│       │   ├── _modules
│       │   ├── _sources
│       │   └── _static
│       └── latex
├── examples
└── mypackage
    ├── subpackages
    └── subpackages

当我在文档中工作时,两个分支(devgh-pages)都会更新,因为我更改了 docs 目录中的文件,然后 sphinx 将 html 编译到 html 目录中。

但是,当我完成该过程后,我必须在主分支和 gh-pages 分支中手动执行 git add . &amp;&amp; git commit,然后将所有更改推送到 git。

这不是很麻烦,但是如果我可以为所有分支发出一个命令,那将很方便。我知道git push 可以“默认”推送所有分支(这就是我所做的),但我发现没有办法这样做来添加和提交(例如;只是为了或澄清)

git add . --allbranches
git commit --allbranches -m "updated the docs"
git push

或类似的东西。有什么办法吗?

干杯!

【问题讨论】:

  • 你似乎不明白 Git 中的分支是什么。路径中不存在分支。请read a book.
  • @poke 我知道我可以更改一个目录中的分支,并且分支不必存在于特定目录中。我在所有计算机的顶级目录中使用了所有 4 个分支,除了 gh-pages,出于实际目的,我将其永久签出在 html 中,这就是我的意思。无论如何,谢谢你的书提示。
  • 您可能会发现this answer 很有帮助。

标签: git branch git-branch git-worktree


【解决方案1】:

不能一次提交多个分支,也不能合并当前未签出的分支。

但是您可以稍微缩短命令。添加所有更改并提交,然后推入一行

git commit -am "commit message" && git push

【讨论】:

    【解决方案2】:

    我的项目通常有一个包含“开发”内容的顶级目录。所以我可能会像这样编写一个脚本scripts/build_doc.sh(或任何你喜欢的语言):

    #!/bin/bash
    
    if [ "`git status -z`" != "" ] ; then echo Need clean directory ; exit 1 ; fi
    
    whatever_command_to_rebuild_pages
    
    git add -A dir_to_built_html_pages && \
    git commit -m "autobuild" && \
    git push 
    

    两个想法:1)您可以在提交挂钩中执行此操作,2)您确定要在存储库中生成文件吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2023-01-01
      • 2020-07-30
      • 2014-02-22
      • 2013-06-08
      相关资源
      最近更新 更多