簡體   English   中英

如何從git倉庫過濾發布的特定文件?

[英]How to filter particular files for the release from a git repository?

請在開發git倉庫中創建一個獨立的分支是可能的,該分支僅包含特定版本的文件,而無需進行回歸測試,例如? 怎么樣?

例如,我想創建僅包含perl命令的分支並將其推送到/usr/local/bin的git存儲庫。 與master分支合並后,將具有(更改和發布)歷史記錄軌跡的部署,但沒有測試開發的歷史記錄等。

我讀過Git:將特定文件和歷史記錄從一個存儲庫轉移到另一個存儲庫,但是我不想使用filter-branch創建一個全新的存儲庫 我寧願只創建具有整個歷史記錄的release分支,但剝離到特定文件。 假設git log --filegit filter-branch

發布管理應與開發分開。

  • 開發由版本控制工具(此處為git)以及其他文件(如測試文件)管理
  • release是一個過程,該過程需要一個軟件包(對於您而言,是測試文件以外的所有文件)並進行部署(這里是簡單復制到/ usr / local / bin)

您無需調整存儲庫的歷史記錄即可表示“包”(要在目標環境中部署的文件集)。
您應該將存儲庫推送到服務器(目標環境)上的裸存儲庫 ,並讓接收后掛鈎負責部署(將正確文件的副本復制到/usr/local/bin

我找到了最初問題的技術解決方案,但有關發行版管理的VonC答案更為正確。

set -e
git filter-branch --prune-empty --index-filter '
  git ls-tree -z -r --name-only --full-tree $GIT_COMMIT \
  | grep -v "^\(some_file_regexp\|another_file_regexp\)$" \
  | xargs -0 -r git rm -q --cached -r --ignore-unmatch'
git checkout -b release
git checkout master
git reset --hard refs/original/refs/heads/master
rm -r .git/refs/original

有沒有更優雅的技術解決方案?

暫無
暫無

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

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