Git的使用和相關配置

    公司項目之前一直都是svn管理代碼,用着也很不錯。前幾天總監說我們安卓風涼話,所以我們就想着切到Git管理了,帶着裝逼能飛的心理,讓我們上路吧。我之前是用過git命令的,但是隻會使用簡單的git命令,對於如何從零開始搭建一個遠端倉庫,本地倉庫與遠端配置,關聯等這些前期的配置和搭建過程,我是不知道的。所以,湊着這個機會,自己也重新學習一把。
     最有效的學習方式就是模仿。讓我們從模仿做起。
     git是管理工具,所以按照svn的管理邏輯,一定是服務器有倉庫,本地有客戶端可以拉取代碼,從本地工作開發,然後推送到遠端進行同步,以此循環類推,達到多人協同開發的高效便捷。
1、首先要有個遠端的倉庫。前期做實驗沒用自己的服務器,就從github上創建一個空的倉庫就可以了。特別注意的是,在創建的時候,選擇創建README.txt 和.gitignore文件,就會默認生成這兩個文件,自動生成了這兩個文件,後面我們在忽略代碼進行忽略代碼管理的時候就方便了一步。
2、在本地創建個空的倉庫並進行初始化。至於爲什麼要在本地創建新的倉庫並初始化,這就要回去看看svn和git的區別以及git的工作原理圖了。
廢話少說,放碼過來:mkdir gitdemo 該命令負責在當前工作目錄下創建一個gitdemo的目錄(文件夾),接着 cd gitdemo 進入到gitdemo,然後執行:git init 會看到在命令行提示已經初始化了一個空倉庫。至此,創建空倉庫完畢。
3、使本地庫和遠端庫進行關聯: git remote add origin http://hostname 該命令就是爲本地倉庫添加一個遠程主機,並將該主機起名爲origin
可能其他教材中又說需要進行ssh相關配置的,其實不配置也是可以的。配置ssh是爲了提高速度,提高安全性驗證而加的。不加也是可以用的。
4、本地和遠端已經進行了關聯,現在可以將遠端的內容拉取到本地了:git pull origin master 該命令就是從遠端主機中拉取代碼到本地倉庫,然後進行合併更新。在實際的開發過程中或者其他人其實更推薦該步驟改爲git fetch 和git merge 兩步進行。裏面的區別現在我也不太懂。回頭弄懂了做個說明和解釋。
5、拉取到本地後,剩下的就是在本地開發的事情了。在git使用中,區別於svn,我們的新的添加的工作都儘量從分支上完成,然後開發完成後將分支合併到主分支,然後提交。現在我們要開發新的功能了,所以,依照規則,我們先創建一個分支:git branch newbranch 創建了一個分支名爲newbranch的分支。上述命令我們只是創建了分支,但是我們的工作分支還在原來的主分支(忘了介紹,git默認的分支叫主分支,master),所以我們開發前要工作分支切換一下,git checkout newbranch 從原來的工作分支切換到名字爲newbranch的分支。萬事大吉,可以開工了。上面兩個創建和切換的命令可以合併成一條語句 : git checkout -b newbranch
6、一天的開發工作完成,下班時需要將代碼提交到本地倉庫一下,以便保存。git add . 該命令用於將工作空間內所有的修改全部add到暫存區,此時還沒有,還需要git commit -m "此次提交的註釋" 命令才能將代碼的修改commit到本地的倉庫以便保存。至此,已經提交到本地倉庫。
說明:git add . 是偷懶的做法,將所有修改全部添加提交。如果僅僅是想添加提交某個文件,可以git add fileName;
另一種情況 如果 git add . 添加了一百個文件 ,但是有兩個不想添加提交,可以先git add . 先全部添加,然後: git checkout -- fileName;這樣就可以把不想要提交的文件重新撿出暫存區。
7、剛剛的項目是從newbranch分支上進行的,我們的master還是原來的呢,所以我們需要切換回去合併一下,git checkout master 切換到主分支,git merge newbranch ;將newbranch分支的內容和master主分支進行合併。git branch -d newbranch; 工作完成,將新建的分支刪除。
8、項目需要打個測試包,所以要吧本地倉庫的東西提交到遠程主機: git push origin master ;將代碼推送至遠端;良好的習慣是:先拉再推,這樣更安全保險一些,我們推薦使用先拉後推的方式。首次推送時可以採用:git push -u origin master 這樣就默認綁定,以後直接git push origin就好了
10、一些其他的常用命令:
pwd 列出當前的工作目錄
ls 查看當前目錄下的文件  ls -al 查看當前目錄下的所有文件,包含隱藏文件 
git status 查看git 目前的狀態 經常用到該命令進行查看 ,可以實時使用
git rm fileName 刪除某個文件 
git rm directory -r  -f 刪除某個目錄(文件夾)
git clone hostAddress 從遠端主機克隆項目到本地
git tag 打標籤(目前還未使用到)
git reflog 查看提交的日誌記錄,也經常使用,在版本回退是查看commit id
git reset --hard commitId 版本回退 回退到指定id 的版本  。。。注意:一定是沒有push之前,push之後遠端已經存在,就比較麻煩了。
      當然,這只是一些常見的我所熟知的git命令,至於其他的,以後慢慢學,慢慢積累吧。接下來介紹下ssh相關配置和關於忽略文件的部分。
      關於ssh配置只是知道原理,目前如何具體操作還沒有弄明白,稍後更新。先繼續往下看吧。
      下面來寫關於Git在進行項目管理時,一些編譯文件等一些需要忽略的文件的管理.需要進行忽略的無非就是兩種:一種是某個文件或者某一類文件;另一類就是某個目錄中的全部文件或者某個目錄下的某類文件;其實歸根結底其實還是文件的忽略,只是多了一個路徑而已.
      
      Git中,用於忽略文件的是一個".gitignore"文件,我們所要做的其實就是將我們要忽略的文件按照一定的文件格式寫入該文件即可,這樣再推至遠端的時候,git就會自動將文件中配置的東西進行忽略,不會推至遠端主機.
      語法很簡單,對應各種項目,github上也有相應的開源項目供大家參考,組合一下就可以了,非常簡單。這裏先強調一下其他的注意事項.
      1、.gitignore是我們用來忽略項目中的某些需要忽略的文件的,所以,在我們進行多人協同開發時,最好在搭環境的時候就把該文件創建好並配置好該文件,放在本地創庫根目錄下面。特別注意:有的開發者是將初始項目創建好之後先把所有commit的東西推至遠端,然後纔想起來需要忽略,回頭再來創建.gitignore文件進行上傳。特別強調,這個順序是錯誤的,原因就是需要忽略的文件已然推至到了遠端。所以再怎麼忽略遠端也還是會存在第一次已經上傳的文件。
     2.關於gitignore的相關語法和格式問題.首先語法格式及其簡單,以行爲單位 ,將要忽略的文件或者目錄直接寫在文本文件中即可.另外,在github上創建倉庫或者AndroidStudio創建android項目時,可以選擇創建gitignore文件或者會自動創建gitignore文件,所以我們就沒必要多費太多心思,只需要知道如何進行設置,如何進行添加特殊的想要忽略的文件就好了。
     具體的限制和說明如下:
     

1)、配置語法:

  以斜槓“/”開頭表示目錄;

  以星號“*”通配多個字符;

  以問號“?”通配單個字符

  以方括號“[]”包含單個字符的匹配列表;

  以歎號“!”表示不忽略(跟蹤)匹配到的文件或目錄;

此外,git 對於 .ignore 配置文件是按行從上到下進行規則匹配的,意味着如果前面的規則匹配的範圍更大,則後面的規則將不會生效;

2)示例:

  (1)規則:fd1/*
      說明:忽略目錄 fd1 下的全部內容;注意,不管是根目錄下的 /fd1/ 目錄,還是某個子目錄 /child/fd1/ 目錄,都會被忽略;

  (2)規則:/fd1/*
      說明:忽略根目錄下的 /fd1/ 目錄的全部內容;

  (3)規則:

            /*
            !.gitignore
            !/fw/bin/
            !/fw/sf/

            說明:忽略全部內容,但是不忽略 .gitignore 文件、根目錄下的 /fw/bin/ 和 /fw/sf/ 目錄;

發佈了51 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章