簡體   English   中英

git subtree / submodule來自存儲庫的文件並更新

[英]git subtree/submodule a file from a repository and update it

假設我將我的zsh dotfiles保存在一個倉庫中:

$  tree -a -F .
.
├── .zlogin
├── .zsh/
│   ├── some-dir/
│   │   └── another-script.zsh
│   └── some-script.zsh
└── .zshrc

使用另一個項目的子目錄(例如oh-my-zsh的 lib目錄)並將其放在我的.zsh文件夾中,這很.zsh

最終結果應該是這樣的:

$  tree -a -F .
.
├── .zlogin
├── .zsh/
│   ├── lib/
│   │   ├── bzr.zsh
│   │   ├── clipboard.zsh
│   │   ├── compfix.zsh
│   │   ├── completion.zsh
│   │   ├── correction.zsh
│   │   ├── diagnostics.zsh
│   │   ├── directories.zsh
│   │   ├── functions.zsh
│   │   ├── git.zsh
│   │   ├── grep.zsh
│   │   ├── history.zsh
│   │   ├── key-bindings.zsh
│   │   ├── misc.zsh
│   │   ├── nvm.zsh
│   │   ├── prompt_info_functions.zsh
│   │   ├── spectrum.zsh
│   │   ├── termsupport.zsh
│   │   └── theme-and-appearance.zsh
│   ├── some-dir/
│   │   └── another-script.zsh
│   └── some-script.zsh
└── .zshrc

但我不想只下載並復制目錄,我希望能夠自動更新它,而不必將整個oh-my-zsh存儲庫保留在我的項目中。 我怎樣才能做到這一點?

我有一個簡單但模糊的答案,卻有一個“優雅”卻復雜的答案。

我的解決方法是將整個oh-my-zsh存儲庫放在頂級文件夾(如“ subs”或類似名稱)中的子模塊中。 然后從.zsh目錄中符號鏈接到lib目錄...

user@host:~/.zsh>  ln -s ../subs/oh-my-zsh/lib

是的,我覺得輸入這樣的答案后應該洗手。 可以說更優雅的選項涉及對子模塊的稀疏檢出,並將特定文件夾設置為可見。 這是這種方法的絕佳解釋

不幸的是,我認為稀疏簽出不適用於您的特定情況,因為您希望lib目錄位於存儲庫中的.zsh目錄中。 據我所知,如果不將更改提交到子模塊存儲庫中,就無法在子模塊中擁有自己的代碼。 話雖如此,這就是我們正在談論的Git,Git非常神奇,它可能有辦法做到這一點。

如果是我,我會k記它並稱其為好。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM