發表文章

目前顯示的是有「Git」標籤的文章

Git 大哉問:如何為 Fork 出來的專案,同步上游的更新?

圖片
搭配使用 Git 進行開發工作,時常會碰到一個狀況,就是我們 fork 一個專案出來修改,但在我們在修改的同時上游有了更新,這時我們會想要把上游的更新同步下來。這是一個常見的問題,許多人不時會提出來詢問,事實上如果你去 Google ,多半能找到這樣一篇名為「 Syncing a fork 」的 Github 文件。雖然這篇文章已經把程序詳細列出來了,但還是有人看不太懂,原因是要搭配「 Configuring a remote for a fork 」這一篇文件一起看才知道來龍去脈。 簡單來說,我們要先把「上游(upstream)」的 repository 加入我們眼前正在修改的專案,然後把上游更新拉回來,最後再與我們現有程式碼合併。 首先,加入上游的 repository 並命名為「upstream」: git remote add upstream https://github.com/YOUR_USERNAME/YOUR_FORK.git 未來想要更新前,可以使用 fetch 去拉上游的更新回來: git fetch upstream 最後再把 upstream 的內容,與現有的正在修改的進行「合併」: git merge upstream/master

Git 簡記

在團隊的多人協同作業時,版本控制系統是很重要的工具,除了要將大家的工作成果彙整起來之外,還要確保歷史記錄不遺失,讓日後的追朔工作有跡可尋。早期的 CVS 到後來的 Subversion(SVN) 都是屬於這類的版本控制系統。不過對於堪稱世界上最大最多人協作的 Linux Kernel Project,CVS 與 SVN 顯然像的玩具,根本不敷使用。而其他商業的版本控制系統,也多少有些缺點,這也是為什麼 Linux 之父『 Linus Torvalds 』要下海親自打造一套新的版本控制系統『Git』。既然 Git 能勝任於這世界上最大的專案,說它是下一世代的版本控制系統,應該一點也不為過。 這樣的一個強大的工具,讓很多人都躍躍欲試,但也因為太過強大,網路上長篇大論的文章也讓許多人不敢恭維,有殺雞焉用牛刀之感。回頭想想,若是連如同 CVS/SVN 上的基本功能都無法輕易上手,講再多 Git 的特異功能也是枉然,套句 Torvalds 的經典名句:『full of bullshit』,一切都是廢話和放屁!(筆者真的懂每次都聽到一堆所謂的分散式架構等等優點,但還是不知道要怎麼開始用,是多麼令人覺得自己是 git!亦或者是文件撰寫者是 git?) 從人本考量,我們需要版本控制系統,最初就是要能上傳和提交 source code,使之能放在 Server 上保存。此 Server 可以放在遠端,也可以是自己電腦上,要嘗試架一個在本地端(沒有提供外部連入功能)的 GIT Server 相當容易,裝好相關套件之後,指定一個 Source code 的保存目錄就好: Server 端的設定: # 建立一個新目錄,用來放 example project 的程式碼 mkdir example.git cd example.git #  初始化此目錄為 Git 儲存庫 git --bare init 到此,Server 的設定已經完成,新的 example project 儲存庫也已經建立,若是有需要,日後也可以加上 SSH/HTTP 等連線支援,讓外部使用者可以遠端存取此 Git server。 有了 Server 之後,通常真正在做開發工作的,是在客戶端(Client),我們通常會從 Server 上取得一份完整的副本程式碼回家...