Git使用指南

1、獲取Git    安裝並配置Git
Git是由Linus Torvalds編寫的開源軟件(任何人均可以避免費使用),他也編寫了Linux操做系統。
它是一個用於跟蹤隨時間變化的程序,在編程中稱爲版本控制。git

步驟:安裝Git
    Windows:建議下載GitHub for Windows,其中包括Git而且安裝更簡單: windows.github.com。將Git Shell用於您的終端。
    Mac:你也能夠下載GitHub for Mac,其中包括Git,mac.github.com(來自Preferences,選擇命令行工具安裝),或者
        單獨下載Git: git-scm.com/downloads並按照安裝說明進行操做。
    Git與您計算機上的其餘程序不一樣。您可能沒法在桌面上看到一個圖標,但它始終可供您使用,您能夠隨時從終端或Git桌面應用程序訪問它(如GitHub for Mac或Windows)。
    
步驟:配置Git
    一旦安裝,打開終端(又名Bash,又名Shell,又名提示)。您能夠經過鍵入來驗證它是否真的存在:
    $ git --version
    這將返回您正在運行的Git版本,看起來像這樣:
    git version 1.9.1
   (任何版本1.7.10或更高版本均可以。)
   
    接下來,配置Git,以便它知道將您的更改與誰關聯:
    設置你的名字:
    $ git config --global user.name "<Your Name>"
    如今設置你的郵箱:
    $ git config --global user.email "<youremail@example.com>"
    
2、使用Git
    安裝完Git以後,咱們須要把使用Git把代碼從遠程倉庫(如Gitlab)上拉取下來,而後用Idea等工具打開,開始咱們的開發工做,下面介紹一些git的經常使用功能屬性。
    1.建立新倉庫:建立新文件夾,打開,而後執行 git init 以建立新的 git 倉庫。
    2.檢出倉庫:git clone username@host:/path/to/repository  從遠端服務器上檢出代碼
    3.工做流:你的本地倉庫由 git 維護的三棵「樹」組成。第一個是你的工做目錄(working dir),它持有實際文件;第二個是緩存區(Index),它像個緩存區域,臨時保存你的改動;最後是HEAD,指向你最近一次提交後的結果。
    4.添加與提交:
        添加:你能夠計劃改動(把它們添加到緩存區),使用以下命令:git add <filename>  或者 git add * 這是 git 基本工做流程的第一步
        提交:使用commit命令以實際提交改動:git commit -m "代碼提交信息" 如今,你的改動已經提交到了 HEAD,可是還沒到你的遠端倉庫。此時別人仍是看不到你的代碼。
    5.推送改動:你的改動如今已經在本地倉庫的 HEAD 中了。執行以下命令以將這些改動提交到遠端倉庫:git push origin master 固然能夠把 master 換成你想要推送的任何分支。 
                (若是你尚未克隆現有倉庫,並欲將你的倉庫鏈接到某個遠程服務器,你可使用以下命令添加: git remote add origin <server> 如此你就可以將你的改動推送到所添加的服務器上去了。)
    6.分支:分支是用來將特性開發絕緣開來的。在你建立倉庫的時候,master 是「默認的分支」。若是在其餘分支上進行開發,代碼完成後再將它們合併到主分支上。
        建立分支:建立一個叫作「feature_x」的分支,並切換過去:git checkout -b feature_x
        切換分支:git checkout master        ---切換到主分支
        刪除分支:git branch -d feature_x   ---把新建的分支刪掉
        注意:除非你將分支推送到遠端倉庫,否則該分支就是不爲他人所見的,推送分支到遠端倉庫:git push origin <branch>
    7.更新與合併:
        更新:要更新你的本地倉庫至最新改動,執行:git pull  ---在你的工做目錄中獲取(fetch)併合並(merge)遠端的改動。因此git pull 至關於(fetch + merge),更新與合併操做一塊兒進行。
        合併:若是要合併其餘分支到你的當前分支(例如 master),執行:git merge <branch>
    8.解決衝突:上述兩種狀況下,git 都會嘗試去自動合併改動。不幸的是,自動合併並不是次次都能成功,並可能致使 衝突(conflicts)。 這時候就須要你修改這些文件來人工合併這些衝突(conflicts)了。
                改完以後,你須要執行以下命令以將它們標記爲合併成功:git add <filename>  而後再執行git commit -m "解決衝突..."  git push 到遠端倉庫。
                固然在合併改動以前,也可使用以下命令查看:git diff <source_branch> <target_branch>
    9.標籤:在軟件發佈時建立標籤,是被推薦的。這是個舊有概念,在SVN中也有。能夠執行以下命令以建立一個叫作 1.0.0 的標籤:git tag 1.0.0 1b2e1d63ff
            1b2e1d63ff 是你想要標記的提交ID的前10位字符。使用以下命令獲取提交ID:git log  固然你也能夠用該提交ID的少一些的前幾位,只要它是惟一的。
    10.替換本地改動:假如你作錯事(天然,這是不可能的),你可使用以下命令替換掉本地改動:git checkout -- <filename>
                     此命令會使用 HEAD 中的最新內容替換掉你的工做目錄中的文件。已添加到緩存區的改動,以及新文件,都不受影響。
                     假如你想要丟棄你全部的本地改動與提交,能夠到服務器上獲取最新的版本並將你本地主分支指向到它: ①git fetch origin  ②git reset --hard origin/master
3、協同工做:
    經過上面的介紹,相信你會對git有了一個基本的認識和了解。下面說一下實際工做中經常使用的命令以及注意事項。
        1.經常使用命令:
            git init                         //初始化本地git環境
            git clone XXX                    //克隆一份代碼到本地倉庫
            git pull                         //把遠程庫的代碼更新到工做臺
            git pull --rebase origin master //強制把遠程庫的代碼跟新到當前分支上面
            git fetch                         //把遠程庫的代碼更新到本地庫
            git add .                         //把本地的修改加到stage中
            git commit -m 'comments here'     //把stage中的修改提交到本地庫
            git push                         //把本地庫的修改提交到遠程庫中
            git branch -r/-a                 //查看遠程分支/所有分支
            git checkout master/branch         //切換到某個分支
            git checkout -b test             //新建test分支
            git checkout -d test             //刪除test分支
            git merge master                 //假設當前在test分支上面,把master分支上的修改同步到test分支上
            git merge tool                     //調用merge工具
            git stash                         //把未完成的修改緩存到棧容器中
            git stash list                     //查看全部的緩存
            git stash pop                     //恢復本地分支到緩存狀態
            git blame someFile                 //查看某個文件的每一行的修改記錄()誰在何時修改的)
            git status                         //查看當前分支有哪些修改
            git log                         //查看當前分支上面的日誌信息
            git diff                         //查看當前沒有add的內容
            git diff --cache                 //查看已經add可是沒有commit的內容
            git diff HEAD                     //上面兩個內容的合併
            git reset --hard HEAD             //撤銷本地修改
            echo $HOME                         //查看git config的HOME路徑
            export $HOME=/c/gitconfig         //配置git config的HOME路徑
            
        2.團隊協做git操做流程:
            克隆一個全新的項目,完成新功能而且提交:
                git clone XXX                 //克隆代碼庫
                git checkout -b test         //新建分支
                modify some files             //完成修改
                git add .                     //把修改加入stage中
                git commit -m ''             //提交修改到test分支
                git push                     //推送到遠程倉庫
                
            審覈代碼:
                git checkout master         //切換到master分支
                git pull                     //更新代碼
                git checkout test             //切換到test分支
                git meger master             //把master分支的代碼merge到test分支
                git push origin<branch>     //把test分支的代碼push到遠程庫
            
            目前正在test分支上面開發某個功能,可是沒有完成。忽然一個緊急的bug須要處理
                git add .                            //把修改加入stage中
                git stash                            //把未完成的修改緩存到棧容器中
                git checkout bugFixBranch            //切換到bugFixBranch分支
                git pull --rebase origin master        //強制把遠程庫的代碼跟新到當前分支上面
                fix the bug                            //修改bug代碼
                git add .                            //把修改加入stage中
                git commit -m ''                    //提交修改到bugFixBranch分支
                git push                            //推送到遠程倉庫
                git checkout test                    //切換到test分支
                git stash pop                        //恢復本地分支到緩存狀態
        3.建議:對於新手來講,常常用的命令可能就幾個,並且爲了保證不出錯,使用如下命令便可:
                ①git clone XXX                 //克隆代碼--用於第一次拉取代碼,初始化本地倉庫
                ②git pull                      //拉取遠程倉庫代碼併合並
                ③git add .                        //提交修改的內容到stage中
                ④git commit -m "修改內容"        //提交代碼到本地倉庫
                ⑤git push                        //將代碼提交到遠程倉庫
                
                以上①只使用一次,之後就按照②③④⑤的順序操做就能避免一些沒必要要的麻煩。github

相關文章
相關標籤/搜索