1. 程式人生 > >Git/GitHub基本操作

Git/GitHub基本操作

 Git
Git是分散式版本控制工具,SVN是集中式版本控制,有單點故障的問題
GitHub是Git的程式碼託管中心,類似的國內有碼雲,是遠端維護庫
Git的優勢
大部分操作在本地完成,不需要聯網
完整性有保證
儘可能新增資料而不是刪除或修改資料
分支操作非常流暢
與linux命令全面相容

基本操作
1.檢視工作區,暫存區狀態
    git status
2.新增操作,將新建或修改新增到暫存區
    git add [file name]
3.提交操作,將暫存區的內容提交到本地庫
    git commit -m "commit message" [file name]
4.檢視歷史操作記錄
    git log全顯示,翻頁方式和vim一樣
    git log --pretty=oneline 每條日誌以一行顯示
    git log --oneline
    git reflog出現的head{移動到當前版本數}
5.操作版本,回到哪一個版本。
    git reset. --hard 9a9ebd6
    git reset --hard HEAD^根據head指標回到行
    git reset --hard HEAD^^^回退三行
    git reset --hard HEAD~3回退n步     相比來說 git reset --hard 9a9ebd6最好用 6.檢視文件     git --help reset

7.刪除檔案並找回
    刪除:git rm filename
    找回:git reset --hard[指標位置]
    找回的前提是,刪除前,檔案存在時的狀態已經提交到本地庫
    刪除操作已經提交到本地庫:指標位置指向歷史記錄
    刪除操作尚未提交到本地庫:指標位置使用HEAD
8.工作區和暫存區的檔案比較差異
    git diff apple.txt
    git diff HEAD apple.txt
    不帶檔名會比較多個檔案
9.分支的好處
    同時並行推進多個功能開發,提高開發效率
    各分支在開發過程中,如果某個功能開發失敗,不會對其他分支有任何影響
10.檢視分支
    git branch -v
11.建立分支
    git branch [分支名]
12.切換到某個分支
    git checkout [分支名]
    git add filename分支增加修改檔案和上面的一樣
    git commit -m "說明..." [分支名]
13.合併分支
    git merge [被合併的分支名]
14.解決衝突
    第一步:編輯衝突檔案,刪除特殊符號
    第二步:把檔案修改到滿意的程度,儲存退出
    第三步:git add [檔名]
    第四步:git commit -m "日誌說名..."
    注意:第四步後面不能跟檔名

git基本原理
    git底層採用雜湊SHA-1演算法

git遠端操作 1.檢視遠端庫    git remote -v 2.新建遠端庫別名
   git remote add [遠端庫別名] https://github.com/帳號/遠端庫名.git 3.推送分支到遠端庫    git push [遠端庫別名] [分支名]  #必須是建立遠端庫的人或邀請的團隊成員 4.克隆遠端庫    git clone https://github.com/帳號/遠端庫名.git 5.抓取遠端庫的修改到本地庫   git fetch [遠端庫別名 [分支名]] 6.接著5的操作檢視本地庫抓取的結果    git checkout '[遠端庫別名/[分支名]]'    cat filename 7.切換回去    git checkout [分支名]
8.將抓取下來的修改和本地庫合併    git merge [遠端庫別名/分支名] 9.pull=fetch+merge    git pull [遠端庫別名/分支名]

10.解決衝突
   如果不是基於GitHub遠端庫的最新版所做的修改,不能推送,必須先拉取
   拉取下來後如果進入衝突狀態,則按照"分支衝突解決"操作即可

Git工作流
   1.集中式工作流(類似svn)
   2.GitFlow工作流(最常用)
   3.forking工作流(跨團隊操作常用)