標籤:分布式 管理 git github 分布式管理工具--git使用
前言花了點時間,學習Git版本管理工具,以前用過SVN比較之後,確實Git比SVN好用,更強大。簡單總結了一些Git使用命令,如果想弄明白Git請猛擊底下推薦學習網站。
使用總結建立版本庫:初始化一個Git 倉庫,使用git int 命令
添加檔案到Git倉庫,分兩步:
查看內容
版本回退
-
HEAD指向的版本就是目前的版本,因此,Git允許我們在版本的曆史之間穿梭,使用命令git reset --hard commit_id。
-
穿梭前,用git log可以查看提交曆史,以便確定要回退到哪個版本。
-
要重返未來,用git reflog查看命令曆史,以便確定要回到未來的哪個版本。
撤銷修改
- 情境1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。
- 情境2:當你不但改亂了工作區某個檔案的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了情境1,第二步按情境1操作
- 情境3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,版本回退,不過前提是沒有推送到遠程庫。
刪除檔案
- 命令git rm用於刪除一個檔案。如果一個檔案已經被提交到版本庫,那麼你永遠不用擔心誤刪,但是要小心,你只能恢複檔案到最新版本,你會丟失最近一次提交後你修改的內容。
添加遠程庫
- 要關聯一個遠程庫,使用命令git remote add origin [email protected]:path/repo-name.git;
- 關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;
- 此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改;
- 分布式版本系統的最大好處之一是在本地工作完全不需要考慮遠程庫的存在,也就是有沒有連網都可以正常工作,而SVN在沒有連網的時候是拒絕幹活的!當有網路的時候,再把本地提交推送一下就完成了同步,真是太方便了!
從遠程庫複製:
- 要複製一個倉庫,首先必須知道倉庫的地址,然後使用git clone命令複製。
- Git支援多種協議,包括https,但通過ssh支援的原生git協議速度最快。
建立合并分支:
- Git鼓勵大量使用分支:
- 查看分支:git branch
- 建立分支:git branch name
- 切換分支:git checkout name
- 建立+切換分支:git checkout -b name
- 合并某分支到當前分支:git merge name
- 刪除分支:git branch -d name
解決衝突:
- 當Git無法自動合并分支時,就必須首先解決衝突。解決衝突後,再提交,合并完成。
- 用git log --graph命令可以看到分支合并圖。
分支管理原則:
- Git分支十分強大,在團隊開發中應該充分應用。
- 合并分支時,加上--no-ff參數就可以用普通模式合并,合并後的曆史有分支,能看出來曾經做過合并,而fast forward合并就看不出來曾經做過合并。
bug分支:
- 修複bug時,我們會通過建立新的bug分支進行修複,然後合并,最後刪除;
- 當手頭工作沒有完成時,先把工作現場git stash一下,然後去修複bug,修複後,再git stash pop,回到工作現場。
Feature分支:
- 開發一個新feature,最好建立一個分支;
- 如果要丟棄一個沒有被合并過的分支,可以通過git branch -D name強行刪除。
多人協作:
-
查看遠程庫資訊,使用git remote -v;
-
本地建立的分支如果不推送到遠程,對其他人就是不可見的;
-
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠端新提交;
-
在本地建立和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致;
-
建立本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name;
-
從遠程抓取分支,使用git pull,如果有衝突,要先處理衝突。
標籤管理:
-
命令git tag name用於建立一個標籤,預設為HEAD,也可以指定一個commit id;
-
-a tagname -m "blablabla..."可以指定標籤資訊;
-
-s tagname -m "blablabla..."可以用PGP簽名標籤;
-
命令git tag可以查看所有標籤;
操作標籤:
-
命令git push origin tagname可以推送一個本地標籤;
-
命令git push origin --tags可以推送全部未推送過的本地標籤;
-
命令git tag -d tagname可以刪除一個本地標籤;
-
命令git push origin :refs/tags/tagname可以刪除一個遠程標籤。
GitHub使用:
忽略特殊檔案:
- 忽略某些檔案時,需要編寫.gitignore。
- .gitignore檔案本身要放到版本庫裡,並且可以對.gitignore做版本管理!
配置別名:
- 類似:$ git config --global alias.st status
- 給Git配置好別名,就可以輸入命令時偷個懶。
搭建Git伺服器:參考:Git伺服器的搭建
附一張Git Cheat Sheet :
相關學習網站推薦Git教程
Git官網
分布式版本控制系統--Git使用