2014-10-06 114 views
5

我有一個yeoman角應用程序,默認dist文件夾被忽略。所以當我嘗試這個:git subtree push --prefix dist origin gh-pages它失敗,因爲它被忽略。 我不想將dist文件夾推送到master分支,我只想將它推送到gh-pages分支。如何將忽略git的文件夾推送到子樹分支?

我該如何做到這一點?

回答

-1

您可以更新所需分支上的.gitignore文件(首選解決方案)。或者push --force強制更新。

+0

我沒有本地分支。它是這樣的: root - src - dist - .gitignore src文件夾將文件編譯到dist文件夾中。我沒有gh-pages本地分支,我直接從主頁推送到gh頁面。但我不希望dist文件夾包含在主文件夾中 – brielov 2014-10-06 20:53:34

+0

只需更新'gh-pages'分支,以使'.gitignore'文件不包含'dist'文件夾。然後用你需要的文件創建另一個提交。 – 2014-10-06 20:57:34

0

你的答案就在這裏:https://gist.github.com/chrisjacob/825950

上面的鏈接教你如何將文件推送到主,除了DIST文件夾;然後,您只需導航到您的dist文件夾,然後在那裏直接將您推送到您的gh-pages分支。

你的問題會達到完美的配置,但我個人更喜歡使用傳統的「從.gitignore刪除dist」並運行git subtree命令「git subtree push --prefix dist origin gh-pages」。

現在你做出你的決定!

2

我最終爲此寫了一個腳本。它會創建一個臨時提交,並更新.gitignore文件,並刪除包含gh-pages的行。

推送提交後被丟棄。 if語句在那裏,所以你不會意外失去工作。

STATUS="$(git status)" 

if [[ $STATUS == *"nothing to commit, working directory clean"* ]] 
then 
    sed -i "" '/gh-pages/d' ./.gitignore 
    git add . 
    git commit -m "Edit .gitignore to publish" 
    git push origin `git subtree split --prefix gh-pages master`:gh-pages --force 
    git reset HEAD~ 
    git checkout .gitignore 
else 
    echo "Need clean working directory to publish" 
fi