完成问题重写
所以我认为我非常简单直接地解释了这个问题,但似乎我过于简单了,所以这里是所有额外的细节.希望这有助于每个人看到这也不是重复.
我有一个存储库(项目),我希望自动化将提交从分支中的一个目录推送到另一个分支的过程; 我还没有遇到过的东西.
这是我的项目的完整结构:
[PROJECT MASTER BRANCH]
|- gh-pages (directory)
|- css (directory)
|- index.html (file)
|- readme.md (file)
[PROJECT gh-pages BRANCH]
|- (empty at the moment)
Run Code Online (Sandbox Code Playgroud)
我希望做的是创建一个钩子,它将从主分支中自动处理我的gh-pages目录中的更改,并通过gh-pages分支复制/克隆/替换它们(无论哪个术语使用正确),项目网站分支.这是一个省略所有其他文件的示例:
[PROJECT MASTER BRANCH]
|- gh-pages (directory) <=== SEE UPDATE BELOW [A]
| |- css (directory)
| | |- style.css (file)
| |- index.html (file)
[PROJECT gh-pages BRANCH]
|- css (directory) <=== SEE UPDATE BELOW [B]
| |- style.css (file)
|- index.html (file)
Run Code Online (Sandbox Code Playgroud)
我对这个级别的Git Hub完全陌生.我通常只是坚持基础,从不使用终端/外壳.总而言之,为了澄清我希望做的事情,我想:
这是我尝试使用的一些post-receive钩子代码(我是通过研究一些东西来实现的)但它不起作用: …
我有一个PayPal PHP 类库的 GitHub 存储库,并且有一个使用该库构建的[一组演示套件的单独 GitHub 存储库][2]。
演示套件存储库添加了类库作为 Git 子模块,并且还添加了 Bootstrap 作为子模块。这是我的 .gitmodules 文件...
[submodule "vendor/angelleye/paypal-php-library"]
path = vendor/angelleye/paypal-php-library
url = https://github.com/angelleye/paypal-php-library.git
[submodule "vendor/twbs/bootstrap"]
path = vendor/twbs/bootstrap
url = https://github.com/twbs/bootstrap.git
Run Code Online (Sandbox Code Playgroud)
由于某种原因,PayPal 库子模块不再工作。当我查看演示套件存储库并浏览子模块时,它显示了指向特定提交的链接......
不过,该提交似乎不再存在于存储库中,当我们单击该链接时,它会显示 GitHub 404 Not Found 页面。
目前不知道如何解决这个问题..?? 当我们运行时,git submodule update它会很好地引入 Bootstrap,但 PayPal 库由于链接/子模块损坏而失败。
不过,PayPal 库存储库仍然没问题,而且我本地的内容都与 GitHub 的内容相匹配,所以我不确定此时该怎么办。
任何有关如何修复子模块的信息将不胜感激。谢谢!
我是一个小型固件团队的成员,我们使用私有Git服务器进行版本控制.我们的代码库通常具有用于平台特定代码的文件夹,由多个平台使用的公共代码以及由我们开发的微处理器的制造商提供的SDK.
目前我们的存储库以公共代码为中心; 每个平台在存储库中都有一个文件夹.这至少有两个严重的后果;
当我们推动一个平台的更改时,对于共享相同公共代码的所有其他平台,它是可见的.这会使提交历史记录与多个平台的发布混乱,并且在过去导致混淆我们正在审查哪个平台的更改.
在提交之前,需要对存储库中的所有平台验证对公共代码的更改,从而导致不必要的痛苦.(有人昨天没有这样做,并做了一些更改,导致我们的几个旧平台无法构建.这个特殊的存储库有5个平台)
我正在努力为每个平台建立一个存储库,以便我们可以定期更改公共代码并升级SDK,而不必强制更新和验证我们支持的所有平台.由于我们是一个五人团队,这些问题通常会在关键时刻发布,因此可以为我们节省大量不必要的脑损伤和时间.当然,困难的部分在于实施.
现在我想象的是一个系统,每个平台都有自己的存储库,每个公共代码库都有自己的存储库,我们使用的每个SDK都有自己的存储库.平台存储库将链接或以其他方式引用它们用作"子存储库"的公共代码和SDK.
我已经阅读过有关子模块的信息,但我认为它们会导致更多问题而不是修复; 最近我们不得不调试三年前的固件,这需要将我们的本地代码库重置为问题版本以进行静态分析.据我所知,子模块的本地版本与其所在的存储库分离,这意味着将存储库重置为旧提交将使子模块相对于存储库的其余部分处于"未来"状态.在调试旧代码的上下文中,此行为是100%不可接受的.
这是我要实现的项目的项目符号列表; (按重要性排序)
打破特定代码远离公共代码,因此对公共代码和/或SDK的更改不会对其他平台产生无法预料的后果.
为每个平台,每个公共代码库和每个SDK创建新的存储库.
将远程存储库克隆到本地计算机应该是一个步骤; 在构建平台之前,不应强迫新用户拉出每个子存储库.
此外; 恢复旧代码,包括通用代码,以及用于构建任何特定平台的版本XXX,YYY SDK,必须是可能的.
编辑:我最后一次"恢复"代码我使用硬重置到我正在调试的构建和软重置到比我知道的年龄大一年的构建很好,但只有我的语法中的Git插件荧光笔会显示已知好和已知坏之间的变化.
顺便提一下,这个特殊的平台是单片的,这个问题不适用于它,但为了论证,我们会说它确实适用.
修改公共代码不应影响平台,直到平台的维护者引入新的公共代码.(我相信通过添加一个公共代码的标记提交而不是公共代码的主人,可以使用子树)
只读子存储库是可接受的限制.(即,无法在平台的存储库中修改子存储库,或者无法从平台的存储库中推送对子存储库的更改)
SmartGit/HG支持是可取的,因为除了我们的一个成员之外的所有成员都使用它.
编写一次性任务脚本是可以接受的,但我不想污染具有Git工作脚本的平台.
我也读过关于子树的内容,但此刻我不确定他们是否会直觉地允许我想要的行为.我的主要问题是:Git是否支持这种功能?如果是,该功能是通过子树还是其他方法实现的,我还不知道?
当我的本地仓库(由包含我的文件的多个子文件夹组成)推送到github时,github仓库中列出了文件夹的名称,但它们未被指定为文件夹/其中没有任何文件可以访问...我怎样才能使这个工作?
我在项目中添加了 2 个子模块,subA 和 subB,位于 externals/subA 和 externals/subB 中。
今天,另一位团队成员提交了他的代码,当它被拉取时,在git statusexternals/subA 和 externals/subB 中使用时,subA 和 subB 都显示分离头状态。
我先做了git submodule update,没有报告任何错误。我一次又一次地尝试,git submodule init但git submodule update它没有改变。
我们如何才能使子模块恢复同步?子模块出现这种情况的原因是什么?自我们开始以来,这是第一次出现问题。谢谢。
更新子模块submodule --remote将拉入子模块的HEAD,而不是包装git repo中记录的哈希.但似乎包装git repo将继续管理它们本身的散列,不必要地将噪声引入其自己的历史.
例如submodule update --remote,在包装项目中会引入更改之后,例如:
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: <module-name> (new commits)
Run Code Online (Sandbox Code Playgroud)
在包含子模块的git仓库中是否可能不包含关于子模块哈希的任何哈希或信息,这样submodule update就不会引入新提交的需要,也不会反映在项目的历史中?
这将解决可以描述为"始终使用所有子模块中的最新子模块"的工作流程,当前需要在每个子模块之后submodule update进行特殊管理(提交或以某种方式从历史记录中移除上述更改记录...这使得工作流程非常混乱,当您总是想用最新的).
如何在子模块中更改分支?当我git branch从子模块中运行时,我看到以下输出:
> git branch
* (HEAD detached from 229a7b2)
master
Run Code Online (Sandbox Code Playgroud)
我将如何进入新的分支?喜欢development吗?
我对 git 很陌生。这可能是一个愚蠢的问题,但我真的不知道如何解决这个问题..我一直试图找到答案,但我无法......
我试图使用 React.js 和 Node.js 创建我的项目。我创建了从“npx create-react-app client”创建的 sever.js 和 client 文件夹。当我第一次推送到 git 时,我收到了这个错误消息。
! [rejected] master -> master (fetch first)
error: failed to push some refs
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about …Run Code Online (Sandbox Code Playgroud) 即使在执行 git add -A 之后,当我运行 git status 时,我得到了这个:
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: src/cartographer (modified content, untracked content)
# modified: src/cartographer_ros (untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
我尝试使用“git add *”、“git commit -m“something”和“git push”向我的github添加一个新文件夹。
这是我的 GitHub 存储库的屏幕截图,我在其中添加了“ angular2-webpack-starter”,但它甚至不是文件夹。
我再次尝试执行上面的命令,它显示
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
那个文件 ( angular2-webpack-starter) 图标是什么意思?
如何将该文件夹添加到我的 GitHub 存储库?