相关疑难解决方法(0)

Git子树 - 子树最新但无法推送

我正在使用Git子树和我正在处理的几个项目,以便在它们之间共享一些基本代码.基本代码经常更新,升级可以在任何项目中进行,最终所有项目都会更新.

我遇到了一个问题,git报告我的子树是最新的,但是推送被拒绝了.例如:

#! git subtree pull --prefix=public/shared project-shared master
From github.com:****
* branch            master     -> FETCH_HEAD
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

如果我推,我应该得到一个消息,没有什么可以推动......对吗?对?:(

#! git subtree push --prefix=public/shared project-shared master
git push using:  project-shared master
To git@github.com:***
! [rejected]        72a6157733c4e0bf22f72b443e4ad3be0bc555ce -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:***'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about …
Run Code Online (Sandbox Code Playgroud)

git push pull git-subtree

80
推荐指数
5
解决办法
2万
查看次数

如何将Heroku git存储库重置为其初始状态?

我在git存储库中有一个Web应用程序.由于历史原因,Web应用程序不在存储库的根目录下,因此它位于名为的文件夹中website.除此之外还有一些其他文件夹,所以我有以下结构:

myApp
+- .git
+- otherFolder1
+- otherFolder2
+- otherFolder...
+- otherFolderN
+- website
Run Code Online (Sandbox Code Playgroud)

该网站在Heroku上运行.由于Heroku要求您的Web应用程序位于git存储库的根目录,所以直到现在我使用了一个构建过程,该过程将website文件夹复制到具有自己的git存储库的完全不同的(外部)文件夹.然后我就能从那里推到Heroku,一切都很好.

现在,因为git包含了这个subtree命令,所以不再需要了,因为我可以直接从我的初始文件夹中推送,但只是website子文件夹,使用:

git subtree push --prefix=website heroku master
Run Code Online (Sandbox Code Playgroud)

基本上,这非常有效.我只有一个问题:由于之前对Heroku的提交来自一个完全不同的git存储库,两者的历史记录彼此不匹配 - 因此Heroku检测到非快进推送,并拒绝subtree推送.

那么我该如何处理呢?

  • 想法1:强制推动.尝试过,但没有工作,因为git subtree push没有--force选项(或类似的东西).
  • 想法2:清除Heroku的存储库并再次从头开始.

我很想知道2,但我不知道如何实现这一目标.

我的第一个方法是运行一个git push heroku :master,但Heroku检测到这一点并否认它.

当然,我可以破坏应用程序并重新创建它,但是所有域分配和附加组件也都消失了,我想避免这种情况.

还有其他想法吗?

git heroku

18
推荐指数
1
解决办法
7259
查看次数

从分支添加git子树

我正在尝试使用我的项目添加一个repo(称为cow)git subtree add.特别是,我想添加分支stable(不是master分支).我试过了:

git subtree add -P cow https://github.com/geoffryan/cow.git stable
Run Code Online (Sandbox Code Playgroud)

但是这返回了错误

'stable' does not refer to a commit.
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

git subtree add -P cow https://github.com/geoffryan/cow.git cow/stable
'cow/stable' does not refer to a commit.
Run Code Online (Sandbox Code Playgroud)

和:

git subtree add -P cow https://github.com/geoffryan/cow.git ca26d248a12c21264e32a2c212381cafb578c9fb
'ca26d248a12c21264e32a2c212381cafb578c9fb' does not refer to a commit.
Run Code Online (Sandbox Code Playgroud)

哈希是stable分支中最新提交的哈希值.我在网上看到的使用示例都master用于提交,是否可以subtree add在非主分支上使用?

git git-subtree

16
推荐指数
1
解决办法
8997
查看次数

git子树添加:更改前缀保留本地提交

是否有一种简单的方法来移动使用以下cmd添加的子树

git subtree add --prefix=<prefix> <repository> <commit>
Run Code Online (Sandbox Code Playgroud)

换句话说,是否可以将前缀更改dir1dir2.

git子树的答案:可以在分叉存储库中更改子树分支/路径吗?建议删除子树然后添加回来.

它对我不起作用,因为我需要保留本地提交,还有另外一种方法吗?

git git-subtree

5
推荐指数
1
解决办法
2104
查看次数

切换 Git 子树分支的正确方法?

假设我已经添加了一个新的远程“foo”,并拉了一个子树,压扁了,分支主。

$ git remote add -f foo some-repo.git
$ git subtree add --prefix=foo --squash foo master
Run Code Online (Sandbox Code Playgroud)

从我读过的文章(herehere等)来看,这似乎是切换分支的常用方法。在这种情况下,要分支“bar”:

$ git rm -r foo
rm 'foo/file'.
...
$ git commit -m "Delete foo on branch 'master' to switch to branch 'bar'."
1350 files changed, 144703 deletions(-)
delete mode 100644 foo/file
...
$ git subtree add --prefix=foo --squash foo bar
git fetch foo master
From some-repo.git
 * branch            master     -> FETCH_HEAD
Added dir 'foo'
Run Code Online (Sandbox Code Playgroud)

但这感觉很脏。为什么不直接使用已经有分支参数的“git subtree pull”(没有 rm/commit/add)?

$ …
Run Code Online (Sandbox Code Playgroud)

git subtree git-subtree

5
推荐指数
1
解决办法
1006
查看次数

标签 统计

git ×5

git-subtree ×4

heroku ×1

pull ×1

push ×1

subtree ×1