我们使用git子模块来管理一些依赖于我们开发的许多其他库的大型项目.每个库都是作为子模块引入依赖项目的单独repo.在开发过程中,我们经常想要抓住每个依赖子模块的最新版本.
git有内置命令来执行此操作吗?如果没有,Windows批处理文件或类似文件怎么样呢?
有没有一种简单的方法可以打印完整的路径file.txt?
file.txt = /nfs/an/disks/jj/home/dir/file.txt
Run Code Online (Sandbox Code Playgroud)
该 <command>
dir> <command> file.txt
Run Code Online (Sandbox Code Playgroud)
应该打印
/nfs/an/disks/jj/home/dir/file.txt
Run Code Online (Sandbox Code Playgroud) 假设我有一个目录/X/Y,这是一个git存储库.有可能以某种方式git pull从内部调用命令/X,但目标是该/X/Y目录?
编辑:我想我特别想知道:是否可以使用git命令执行此操作,但无需更改目录?
注意:我接受了VonC的答案,因为它比以前的选项更优雅.对于运行Git低于1.8.5的人,请参阅下面的bstpierre的答案.
我不清楚以下是什么意思(来自git submodule update docs):
...将使子模块HEAD分离,除非
--rebase或--merge指定...
怎么--rebase/ --merge改变事情?
我的主要用例是有一堆中央存储库,我将通过子模块嵌入到其他存储库中.我希望能够改进这些中央回购,直接在他们的原始位置,或从他们的嵌入回购(通过子模块使用它们的那些).
在git中设置项目很简单,所以即使是小脚本我也可以拥有单独的存储库.现在的问题是如何管理它们.
我使用这些存储库在多个地方工作.当我对某个存储库进行了更改后,我希望能够在其他位置更新存储库.
所以我有一个包含许多存储库的目录.
能够用一个命令完成这些操作会很高兴.
输出需要足够沉默才能真正注意到要做的事情.
克隆具有大量子模块的git存储库需要很长时间.在以下示例中是~100个子模块
git clone --recursive https://github.com/Whonix/Whonix
Run Code Online (Sandbox Code Playgroud)
Git一个接一个地克隆它们.比需要的时间长得多.让(可能)假设客户端和服务器都有足够的资源同时回答多个(并行)请求.
如何使用git clone --recursive?加速/并行化git子模块的下载?
我的系统上有几个git存储库,我想在终端列出所有这些存储库.
我正在寻找的是这样的:
/ path/to/my/git/repo/1/REPONAME1
/ path/to/my/git/repo/2/REPONAME2
/ path/to/my/git/repo/3/REPONAME3
如果你能想出如何显示分支名称和回购的状态,例如.[大师] c:0你:1 d:0,那会很棒.
我有一个文件夹 - 'Repos' - 它包含我感兴趣的回购.这些已经从bitbucket克隆,但我想github也可能是一个来源.
Repos
- music-app
- elephant-site
- node-demo
Run Code Online (Sandbox Code Playgroud)
是否有一个git命令,我可以使用哪些步骤通过Repos中的每个文件夹,看看服务器上是否有新的提交,并下载新的东西?如果本地有新的提交,那么上传这些.
如何使用单个命令获取和合并主存储库并对所有子模块执行相同操作?
我有一个包含子模块B的存储库A。子模块B经常更新,更改并不总是最新的。
我可以通过执行以下操作来更新和合并新更改
cd A/B <-- enter submodule directory
git pull <-- run pull to fetch and !!merge!! submodule changes
Run Code Online (Sandbox Code Playgroud)
我想要做的是运行单个命令来 pull&merge 主存储库,并对所有子模块执行相同的操作。
cd A <-- Now enter to parent directory
git pull --recurse-submodules <-- Fetch&merge changes on main repository
<-- and pull changes on all submodules
Run Code Online (Sandbox Code Playgroud)
实际发生的是:
目前的解决方案是:
cd A
git pull --recurse-submodules
cd B
git merge <-- Now merge fetched changes …Run Code Online (Sandbox Code Playgroud) 如何从共享父目录更新多个 Mercurial (hg) 存储库?
/plugins/search
/plugins/overview
/plugins/chart
Run Code Online (Sandbox Code Playgroud)
我想将一个分支更改为默认分支并立即更新它们
cd /plugins/search
hg update -C default
hg pull -u
Run Code Online (Sandbox Code Playgroud)