剛剛寫完了一款chrome-extension:Copy with URL(將選中文字復制為超鏈接文本),隨即滿心歡喜地想盡快把它分享出去。按以往的習慣,我會手工把它托管在Github上。但這次,我想玩點高端的操作,用命令代替低效的手工操作。我貌似在工作方式的效率上有着強迫症般的高要求,這有時也讓我無法關注工作本身,很苦惱。
我一開始誤以為Git就是Github的命令行操作方式,然而當我去Github查看剛創建的版本庫時,一臉尷尬。使用Git將本地項目同步到Github大體上需要兩步,創建本地庫和添加遠程庫。
這里用到的工具是Windows平台下Git的組件之一-Git Bash。操作步驟主要參照了廖雪峰的Git教程,該教程對Git的功能和操作進行了實用講解。用作者的話說,就是淺顯易懂,由淺入深。所以,這里我不嘮叨原理,只記錄操作。
1. 創建版本庫
1.1 准備工作
打開Git Bash,命令行界面的樣子:
使用你的名字和郵箱為本機在Git系統上注冊身份:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
不寫"Your Name"或"email@example.com"則可以查詢本機身份。
1.2 創建一個文件夾
cd 到你心儀的目錄,創建一個空文件夾作為本地倉庫,進入到新建文件夾中:
$ cd d:/Develop/Git $ mkdir Copy_with_URL $ cd Copy_with_URL
注意:本地倉庫的命名不能含有空格,否則不會創建一個名稱包含空格的文件夾,而是創建多個文件夾;路徑和文件夾避免使用中文,以防不測;直接進入一個已經包含文件的文件夾也是可以的。
1.3 初始化倉庫
將平凡的文件夾變身為Git可以管理的倉庫:
$ git init
空倉庫初始化成功后,倉庫內會新添一個.git文件夾,如果該文件夾被隱藏,可以用 $ ls -ah命令查看。不要去招惹該文件夾,它是用來跟蹤管理版本庫的,有了它才讓平凡的文件夾不平凡。
命令行提示符看着也更高檔了些,變成如下形式:
YHB@DESKTOP-U4VUBSM MINGW64 /d/Develop/Git/Copy_with_URL (master)
1.4 添加文件
創建或拷貝項目的代碼文件到Copy_with_URL, $ git status 可以查看當前的版本庫狀態。
將文件添加到倉庫:
$ git add codeA.c codeB.c
此時的文件被添加到倉庫暫存區。
多個代碼文件用空格分隔,如果需要將倉庫目錄下全部的文件添加到倉庫,可以使用命令 $ git add . 。
意外:在添加文件的時候,命令行竟然提示一類警告:
warning: LF will be replaced by CRLF in background-cp.js. The file will have its original line endings in your working directory.
解決意外往往是最耗時間和精力的,反復琢磨了幾遍git如何避免”warning: LF will be replaced by CRLF“提示?中@Andy Deng的回答,大致了解到這是Windows特有,關乎代碼文件換行符格式的一類警告。
出現此警告是由於配置文件中的設置 core.safecrlf=true 而 core.safecrlf=false ,且文件中的換行符不滿足格式統一的要求所致,命令 $ git config --global core.autocrlf[core.safecrlf] 可以查看指定參數的值。
但實際上無需擔心該警告,因為這是一個正確的配置。此警告說明Git已經為用戶采取了解決方案,但不會改變你的源代碼文件。
除此配置外,通過閱讀 git-config 文檔理解 Git 如何使用autocrlf、safecrlf、eol和.gitattributes處理line-ending建議Windows平台下正確的配置應遵循這三步:
- 添加.gitattributes
- 將safecrlf設置為true,命令 $ git config --global core.safecrlf true
- 將autocrlf設置為true,命令 $ git config --global core.autocrlf true
按作者所說,如果將core.safecrlf值為true的話,Git對待有問題的源代碼,可能就不會采取任何措施,而是扔給你一個致命錯誤(fatal),然后拒絕文件添加請求。所以上述配置應該是一種嚴格的正確配置,此時如果源代碼換行符格式一旦不滿足要求,還需要用戶自行使用dos2unix工具來將LF轉換為CRLF。
1.5 提交文件到倉庫
$ git commit -m "comment"
git commit 命令將 git add 添加到暫存區的代碼一同提交到倉庫,輸出本次提交的改動信息,這時你可以放心的將項目交由Git來管理了。 -m 后面輸入的是本次提交的注解,強烈建議輸入有意義的注解,這樣你就能從歷史記錄里方便地找到改動記錄。
2. 添加遠程庫
懶得自己寫了,Git的使用--如何將本地項目上傳到Github第五步開始圖文詳解了具體的操作過程,整個流程也沒遇到什么意外。
3. 疑惑
將兩個不同的本地倉庫推送到同一個Github會如何?
如果復制一份倉庫副本,哪一個才是master?
這里欠一個總結。
版本回退,分支管理這些內容用到的時候,再做補充。
參考資料
git如何避免”warning: LF will be replaced by CRLF“提示?
通過閱讀 git-config 文檔理解 Git 如何使用autocrlf、safecrlf、eol和.gitattributes處理line-ending