[Git] ASP.NET MVC 懶人包2

上篇:[Git] ASP.NET MVC 懶人包1

專題要用 GitHub 協作 ASP.NET MVC 專案,一路下來跌跌撞撞,整理一下做個筆記。

組長增加協作者,組員 clone 下專案

  1. 組長至 Repository 頁面右上角選 Settings,若沒有,要點選「...」更多選項。
  2. 點選 Settings 設定。
  3. 左邊點選「Collaborators」協作者。這裡可能會彈出視窗做密碼確認。
  4. 右邊點選「Add people」加入組員。
  5. 填入組員的 Email 或 GitHub 帳號去尋找。
  6. 找到人後點選「Select a collaborator above」。
  7. 邀請函就會寄到電子信箱,請組員去收。若要增加更多協作者就再點「Add people」
  8. 接下來是已收取信件加入協作的組員的視角,或是組長要測試組員是否可順利參與專案,點選 Repository 頁面的「Code」。
  9. 確認是在 HTTPS 標籤頁面。
  10. 點網址右邊的圖示複製網址。
  11. 組員找空白資料夾,如果希望未來專案路徑是「 D:\Code\prjMVC\ 」,就檔案總管切換到「 D:\Code\ 」資料夾下面按滑鼠右鍵,點選「Git Bash Here」。
  12. 輸入「git clone 網址」,shift + insert 可貼上剛剛複製的網址。
  13. 切換資料夾後路徑出現 (main) 表示此資料夾已經有版本控制,之後可 git add、git commit、git push 和 git pull。
  14. 檔案總管切換到該資料夾。
  15. ~/ 就會有方案檔,但千萬不要直接開啟這個檔案。


組員開啟專案會有的問題的故障排除

前述組長要先將一些檔案例如「 bin/ 」、「.suo」的編譯檔案或個人設定加進去 .gitignore,免得組員 git pull 或 git clone 下來引發一堆 conflict,亂 merge 造成檔案損毁,但是沒有這些檔案又無法繼續,這裡就要靠建置:

  1. 開啟 Visual Studio 點選「開啟專案或解決方案」。
  2. 點選剛剛 clone 下來 ~/ 的 sln 檔案,我不清楚為何在檔案總管執行的話,後面會無法建置,請養成習慣用 Visual Studio 的開啟功能。
  3. 若開啟後直接 F5 偵錯,應該沒意外會出錯,這是因為 ~/prjMVC/bin 是空白的。
  4. 停止偵錯後,點選「建置」。
  5. 點選「清除方案」等待數秒,輸出視窗會有清除成功的訊息。
  6. 點選「建置」、「建置方案」。
  7. 輸出視窗會有成功建置的訊息。
  8. 這時 bin/ 等資料夾應該就有東西,MVC 應用程式就可看編譯結果了。


組員會有的「系統找不到指定的路徑」的問題故障排除

  1. 像下面要新增一個類別。在 ~/Models/ 滑鼠右鍵。
  2. 「加入」。
  3. 「新增項目」。
  4. 「程式碼」。
  5. 「類別」。
  6. 檔名用「Member.cs」。
  7. 「新增」。
  8. 這時 Visual Studio 會跳出一個「系統找不到指定的路徑」的失敗訊息。明明是再正常不過的動作,為什麼會這樣呢?
  9. 比較圖9和圖10,前者是 Visual Studio 方案總管的項目,有 ~/Images 、~/Models 和 ~/ViewModels 三個資料夾,
  10. 後者是檔案總管實際的樣子,並沒有 ~/Images 、~/Models 和 ~/ViewModels 三個資料夾。
  11. 其實根本沒有 ~/Models 資料夾,但為何 Visual Studio 的方案總管會顯示有,造成新增類別失敗?因為這個方案總管的依據是 ~/prjMVC/prjMVC.csproj 這個設定檔。
  12. 滑鼠右鍵編輯他,或是用 Visual Studio Code 開啟,會看到有個地方是這三個資料夾,所以在 Visual Studio 的方案總管出現這些資料夾。
  13. projName.csproj 方案設定檔是隨著組長 git 推上 GitHub,然後被組員 clone 下來,所以設定寫有這三個資料夾是合理的,至於組長有的資料夾為何組員 clone 或 pull 下來會沒有?這是因為 Git 並不會 track 空白資料夾,Git 靠的是計算檔案 SHA-1 值來追蹤,空白資料夾自然不會被 add,其實組長在新增空白資料夾時可以在 Git 中執行「 touch .keep 」新增一個空白檔案讓資料夾不再空白,就可跟著被 push 上 Git server 了。若要解決這個問題,可以等待組長在資料夾新增檔案,push 後讓組員 pull;另外就是組員手動在檔案總管新增應該存在的資料夾即可:
  14. 就可順利在 ~/Models 新增類別開始寫 Code 了。


已被追蹤過的檔案要加入 .gitignore

有的時候已經被 git add 的檔案,之後不希望他被控管,例如圖片檔(想另外壓縮打包管理)或是 Web.config(用來儲存如 Email password 的敏感資訊),但是將他加入 .gitignore 會發現沒有用,他會一再被 add 並 push ,無視在 .gitignore 有加上去的事實,這是因為 .gitignore 只對從來沒被控管過的檔案有效,但至少第一步我們還是要把他加進去(以下範例只對需要另外保存 Web.config 的專案有效,請勿任意將 Web.config 移出控管,操作不甚會造成其他人無法開啟專案)
  1. 這是已經被追蹤但想取消的檔案 Web.config。
  2. 編輯 ~/.gitignore 檔案。
  3. 加上路徑與檔名
  4. 開啟 Git
  5. 執行「git rm --cached 檔名」,注意 dash 是兩個,若和檔名不是同一個位置要加上路徑。
  6. 若做好上面兩件事 (1) 加入 .gitignore 忽略清單 (2) 做 git rm --cached 取消追蹤 。這樣 git add、commit、push,就會看到 server 上不會有該檔案了

但是 Web.config 仍然是應用程式必要檔案,請另外尋求將檔案傳給組員的方法。

上篇:[Git] ASP.NET MVC 懶人包1

留言