相关疑难解决方法(0)

在所有子目录上运行git pull

如何在不cd进入每个repo的根目录的情况下从共享父目录更新多个git存储库?我有以下几个单独的git存储库(不是子模块):

/plugins/cms
/plugins/admin
/plugins/chart
Run Code Online (Sandbox Code Playgroud)

我想一次更新它们或者至少简化我当前的工作流程:

cd ~/plugins/admin
git pull origin master
cd ../chart
git pull
Run Code Online (Sandbox Code Playgroud)

等等

git bash

220
推荐指数
13
解决办法
9万
查看次数

Git diff说子项目很脏

我刚刚运行了一个git diff,我得到了所有大约10个子模块的以下输出

diff --git a/.vim/bundle/bufexplorer b/.vim/bundle/bufexplorer
--- a/.vim/bundle/bufexplorer
+++ b/.vim/bundle/bufexplorer
@@ -1 +1 @@
-Subproject commit 8c75e65b647238febd0257658b150f717a136359
+Subproject commit 8c75e65b647238febd0257658b150f717a136359-dirty
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我如何解决它?

git git-submodules

214
推荐指数
8
解决办法
9万
查看次数

git子模块跟踪最新

我们正在将我们(巨大的)项目转移到git,我们正在考虑使用子模块.我们的计划是在超级项目中有三个不同的头:发布,稳定,最新.项目负责人将处理释放和稳定的分支机构.他们将根据需要移动子模块.

问题是"最新"头.我们希望超级项目"最新"头部跟踪所有子模块的主分支(自动).如果能够显示子模块的所有提交历史,那也很棒.

我看过gitslave,但它不是我们想要的.有什么建议?

git git-submodules git-track

130
推荐指数
1
解决办法
8万
查看次数

递归Git推/拉?

我有一个包含其他git存储库的git存储库.是否存在以递归方式推送和/或拉取元存储库而不是子存储库的命令?

git recursion push pull

22
推荐指数
3
解决办法
1万
查看次数

如何拉新的子模块

试图在这个网站和其他人寻找答案: StackOverflow - 简单的方法拉最新的所有子模块

他们似乎都想谈谈你是否正在控制它们,而不是如果其他人添加了一个,我只想将额外的一个添加到我的项目中,而不需要保存或备份我的更改,如果我需要删除该文件夹.

我应该删除我已经删除的.gitmodules文件和/或子模块目录git clone --recursive吗?(StackOverflow - 如何git clone包含子模块?)

这些命令似乎也没有帮助:

  • git submodule update --init --recursive 好像什么也没做.
  • git submodule update --recursive 没有.
  • git fetch --recurse-submodules输出Fetching submodule ...几次.
  • git pull --recurse-submodules输出相同的东西,然后Already up-to-date.在获取试用后说.奇怪,因为在任何一种情况下我的子模块都已下载.
  • git clone --recursive ... 尚未尝试过. 我觉得会覆盖我在Stash或其他方面做出的任何改变.
  • git submodule update --recursive --remote 检查出其中一个子模块的新提交SHA.
  • git submodule update --recursive检查出其中一个子模块的新提交SHA.可能是较旧的原始提交级别.
  • git submodule status 为每个提供适当的SHA,版本和名称信息,同时仍然缺少我想要的那个.
  • git submodule foreach git pull origin master
  • git submodule update 什么也没做.

我每次都手动仔细检查库目录,以确定是否出现了额外的子模块.

我想避免执行某些操作,除非它们对我当前包含代码更改的存储库状态没有破坏性,并解决了我的问题,以防它是我提到的但没有运行的命令,或者其他人有另一个尝试. …

git git-submodules

17
推荐指数
2
解决办法
1万
查看次数

如何让`git clone --recursive`重新创建子模块的遥控器和分支?

我有一个带有一些子模块的项目.其中许多是从GitHub fork中克隆到的,我为自定义mod添加了一个分支.典型的设置如下:

在本地文件夹中:MyProject1/Frameworks/SomeAmazingRepo /

$ git branch -vva
*my-fork                       123456 [my-fork/my-fork] Latest commit msg from fork
master                         abcdef [origin/master] Latest commit msg from original repo
remotes/my-fork/my-fork        123456 [my-fork/my-fork] Latest commit msg from fork
remotes/my-fork/master         abcdef [origin/master] Latest commit msg from original repo
remotes/origin/HEAD            -> origin/master
remotes/origin/master          abcdef [origin/master] Latest commit msg from original repo

$ git remote -v
my-fork                        git@github.com:MyUser/SomeAmazingRepo.git (fetch)
my-fork                        git@github.com:MyUser/SomeAmazingRepo.git (push)
origin                         git://github.com/OriginalOwner/SomeAmazingRepo.git (fetch)
origin                         git://github.com/OriginalOwner/SomeAmazingRepo.git (push)
Run Code Online (Sandbox Code Playgroud)

git clone --recursive我的项目开始一个新的分拆计划,当它开始递归,它吐出了一个错误,声称它找不到这些回购存储的提交.检查后,似乎没有添加遥控器,并且分支机构在主机中留下(空)...

在本地文件夹中:MyProject2/Frameworks/SomeAmazingRepo /

$ git branch …
Run Code Online (Sandbox Code Playgroud)

git cloning git-clone git-remote git-submodules

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

无法使用Git将文件重置为特定提交

我有一个修改过的文件,我想对最新提交中的任何内容进行反复处理,但是它"卡住",总是被标记为已修改.

$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   index.php
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)

然后我尝试:

$git checkout -- index.php
Run Code Online (Sandbox Code Playgroud)

但是git状态的输出仍然是相同的.然后我尝试:

$git reset --hard master
HEAD is now at 02c9613 test commit message
Run Code Online (Sandbox Code Playgroud)

并且git状态的输出仍然是相同的.

关于如何摆脱该文件假设的变化的任何想法?

git git-checkout git-reset

12
推荐指数
1
解决办法
4050
查看次数

把所有内容都存放在Git中,包括所有子模块?

当项目包含子模块时,您需要分别存储/取消暂存所有子模块.有没有办法用较少的动作来做到这一点?

这个链接可能有帮助:

简单的方法拉最新的所有子模块

它是关于"拉"命令,但有一些方法如何在所有子模块之间进行迭代.

git git-submodules

12
推荐指数
1
解决办法
6339
查看次数

git submodule commit/push/pull

我想使用git子模块.

我需要采取的步骤将我的更改推送到我的项目中

  1. 从子模块目录添加/ commit/push
  2. 从父目录添加/提交/推送

我需要采取措施来拉动项目的变化.

  1. 来自父目录的git pull
  2. 从父目录更新git子模块

从原始仓库更新子模块的步骤

  1. 来自子模块目录的git pull

令我担心的是http://git-scm.com/book/en/Git-Tools-Submodules的以下内容

问题是您通常不希望在分离的HEAD环境中工作,因为它很容易丢失更改.如果你做了一个初始子模块更新,在该子模块目录中提交而不创建一个分支工作,然后再从超级项目运行git子模块更新而不同时提交,(?? update/commit/update将失去更改?) Git会在不告诉您的情况下覆盖您的更改.从技术上讲,你不会失去工作,但你不会有一个分支指向它,所以它将有点难以检索.

要避免此问题,请在使用git checkout -b work或等效工作的子模块目录中创建分支.当您第二次执行子模块更新时,它仍将恢复您的工作,但至少您有一个指针可以返回.

我要修改子模块并且不想搞砸,上面的文档简要提到了失去变化的可能性,我不明白可能导致丢失的原因.

我想知道除了上面列出的更多的其他步骤,我需要采取什么来防止损失.特别是几个团队成员修改子模块,他们需要做些什么不搞乱?

git git-submodules

11
推荐指数
1
解决办法
2万
查看次数

Git子模块乱七八糟:如何与不熟悉git的开发人员一起使用git子模块?

我对使用git的子模块功能感到非常沮丧.要么我仍然没有做对,要么就是因为我没想到这一点.以下项目情况给出:

Project
  | .git
  | projsrc
  | source (submodule)
  | proj.sln
Run Code Online (Sandbox Code Playgroud)

在此方案中,指向包含所有项目中的公共源数据的另一个存储库.在源代码下发生了很多开发,也在projsrc下.遗憾的是,Project指向源子模块的一些提交,而不是它的实际HEAD.这是通常的git行为,据我所知.

我已经发现了

git submodule update
Run Code Online (Sandbox Code Playgroud)

只需获取与主项目一起提交的子模块版本.但是,我真的希望始终与子模块开发保持同步,但是没有任何真正的线索如何做到这一点.因此我的问题是:

是否可以将项目附加到子模块的HEAD,不管这是否会破坏项目的编译.我只是不想总是进入子模块目录并执行git pull.因为我认为我可以放弃在子模块目录中完成的更改,因为这很简单地附加到提交而不是真正的任何分支左右.

请考虑以下限制:

  • 我们小组的开发人员并不熟悉所有VCS.我们之前习惯使用非常庞大的svn存储库,根本没有任何外部repo功能.
  • 我们正在开发Windows
  • click'n'forget解决方案是最好的,因为大多数项目成员都使用命令行界面而感到害怕:)

windows git git-submodules

7
推荐指数
1
解决办法
7634
查看次数