我有一個存儲庫,裏面有一個Laravel應用程序,我正在使用其中包含master和gh-pages分支。git checkout gh-pages分支有來自主分支的文件
當我做
git checkout gh-pages
一切正常,但兩個目錄「應用程序」,然後從主分支顯示了「供應商」。在gh-pages分支中,我將它們都添加到.gitignore中,以確保它們不會被推送到gh-pages遠程分支。但後來我決定嘗試刪除供應商目錄。當我切換回主分支時,供應商目錄不見了,所以我必須運行composer install才能恢復。
然後我試着再次克隆版本庫,讀取gh-pages分支併發生同樣的問題。
忽略他們在gh-pages分支中的作品,但他們不屬於那裏,所以我很困惑他們爲什麼在那裏。這是兩個分支中出現的唯一兩個目錄。
你可以看看在github https://github.com/isimmons/office-twit回購這些目錄不存在,所以我不明白他們爲什麼在我的本地克隆回購存在。
更新:從清潔克隆的repo開始,這裏是cli輸出的完整列表。發生了什麼使/ app目錄在gh-pages分支中消失的問題,但問題仍然存在於/ vendor目錄中。
C:\Users\lotus\projects
λ git clone [email protected]:isimmons/office-twit.git
Cloning into 'office-twit'...
remote: Counting objects: 470, done.
remote: Compressing objects: 100% (254/254), done.
rRemote: Total 470 (delta 190), reused 458 (delta 178)
Receiving objects: 100% (470/470), 946.23 KiB | 460.00 KiB/s, done.
Resolving deltas: 100% (190/190), done.
C:\Users\lotus\projects
λ cd office-twit\
C:\Users\lotus\projects\office-twit (master)
λ ls
app bootstrap composer.lock phpunit.xml readme.md upgrade.md
artisan composer.json CONTRIBUTING.md public server.php
C:\Users\lotus\projects\office-twit (master)
λ git remote
origin
C:\Users\lotus\projects\office-twit (master)
λ git branch
* master
這一切都很好。雙重檢查以確保我擁有的是'origin'遠程'master'分支,並且/ vendor目錄缺失,因爲它應該是。
在拉入gh-pages分支之前,我做了一個'composer update',它添加了/ vendor目錄。
C:\Users\lotus\projects\office-twit (master)
λ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing intouch/newrelic (dev-master aca23cc)
Loading from cache
- Installing symfony/translation (2.4.x-dev 0919e0f)
Loading from cache
. . . many more packages install . . .
Generating autoload files
Generating optimized class loader
清單我看到/供應商目錄中的內容,因爲我應該在這一點上,和git狀態顯示一個乾淨的目錄,因爲它應該,因爲/供應商是在的.gitignore文件。
C:\Users\lotus\projects\office-twit (master)
λ ls
app bootstrap composer.lock phpunit.xml readme.md upgrade.md
artisan composer.json CONTRIBUTING.md public server.php vendor
C:\Users\lotus\projects\office-twit (master)
λ git status
# On branch master
nothing to commit, working directory clean
接下來我結帳並跟蹤gh-pages分支,所以我在本地應該與遠程(原始)上的內容相同。
C:\Users\lotus\projects\office-twit (master)
λ git checkout -b gh-pages origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
Switched to a new branch 'gh-pages'
正如你可以看到不知何故/供應商目錄,雖然在GH-的網頁目錄上顯示出在https://github.com/isimmons/office-twit/tree/gh-pages遠程查看GH-頁面分支的目錄不存在。所以這是本地發生的。
C:\Users\lotus\projects\office-twit (gh-pages)
λ ls
assets index.html README.md vendor
C:\Users\lotus\projects\office-twit (gh-pages)
λ git status
# On branch gh-pages
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# vendor/
nothing added to commit but untracked files present (use "git add" to track)
我不想在這一點上,推動GH-頁面,因爲/供應商不屬於那裏,並同時加入/供應商的.gitignore將保持它被跟蹤,它不應該在那裏所有。
如果我在gh-pages分支中刪除/ vendor,那麼git status會顯示一個乾淨的工作目錄,但是當我更改回主分支/供應商時,它也被刪除了。
C:\Users\lotus\projects\office-twit (gh-pages)
λ rm -rf vendor
C:\Users\lotus\projects\office-twit (gh-pages)
λ git status
# On branch gh-pages
nothing to commit, working directory clean
C:\Users\lotus\projects\office-twit (gh-pages)
λ git checkout master
Switched to branch 'master'
C:\Users\lotus\projects\office-twit (master)
λ ls
app bootstrap composer.lock phpunit.xml readme.md upgrade.md
artisan composer.json CONTRIBUTING.md public server.php
最後更新:我只是想出了爲什麼/ app目錄之前有。當我在SublimeText中打開本地倉庫進行編輯時,即使主分支是乾淨的,然後切換到gh-pages分支,/ app將重新出現在該分支中。這不是因爲我嚴格使用cli而發生的。所以解決這個問題的部分是在切換分支之前完全關閉/ app目錄。
我覺得奇怪的是GitHub想要一個'gh-pages'分支,而不是'gh-pages'文件夾。使用文件夾,項目的演示使用來自主服務器的文件更容易,而不必始終保持兩個分支同步。有一個高度投票的問題[鏡像gh頁面掌握](http://stackoverflow.com/questions/5807459/github-mirroring-gh-pages-to-master)。 –