git是一個用來管理項目的工具,它的遠程倉庫有github、gitee、gitlab代碼託管中心,既能夠用於我的共享代碼,又能夠用於團隊進行項目的協做與發佈,那麼咱們一塊兒來了解一下git該如何使用~git
git在在本地電腦是分紅三部分的,工做區,暫存區和本地庫,每個區域的做用以下github
首先,想要使用git來管理咱們的項目,那本地一定是有git環境,安裝完git以後,在任何地方均可以右鍵 git bash here 來打開命令行窗口, 找到一個合適的文件夾,把它看成git的倉庫,使用bash
git init // 初始化項目
此時,文件夾裏有一個 .git 文件,這表明git的初始化完成了。工具
倉庫初始化完成,若是沒有項目,那git就沒有用武之地,那咱們接着先建立一個hello.txt,此時裏面寫了一些項目的描述。
一旦建立、修改的文件都是在git的本地區的。首先咱們須要將它提交到暫存區、再提交到本地庫,這樣才能對該文件的各個版本進行管理,更好的對項目進行迭代、更新、回退,那麼就須要如下這些指令gitlab
git config --global user.name alice // 全局下設置用戶名, 只需設置一次 git config --global user.email alice@hello.com // 全局下設置用戶郵箱, 只需設置一次 git status // 查看本地文件的狀態,紅色表示在工做區文件有新增/修改,綠色表示在暫存區文件有新增/修改 git add . // 使用.表示提交全部文件, 也能夠寫上具體提交文件 git commit -m "add file" // ""表示的是備註信息
修改和新增所做的操做是同樣的,git命令行工具的提示會有不一樣,當文件屢次提交到本地庫以後,本地庫對於該文件的記錄就會有多條,此時咱們可能想要看一下總共提交了多少個版本,能夠經過如下方式查看歷史記錄測試
git log // 將完整的歷史記錄展現出來, 包括時間、做者以及提交的備註信息 git log --pretty=oneline // 將歷史記錄以一行展現 git log --oneline // 將歷史記錄以一行展現, 同時截取表明文件的前七位哈希值 git log reflog // 將歷史記錄以一行展現, 截取表明文件的前七位哈希值, HEAD@{0}表示當前位置
若是某次修改出了bug,須要回退代碼,那麼能夠用如下的方式fetch
git reset [回退方式] [版本] 回退方式有如下幾種 --hard 表明工做區暫存庫和本地區都回退 --mixed 表明將暫存區和本地庫的版本回退,此時輸入 git status 查看文件狀態時,提示文字會標爲紅色,由於工做區和暫存區的文件不一致了 --soft 表明只將工做區的版本回退,此時輸入 git status 查看文件狀態時,提示文字會標爲綠色,由於工做區與暫存區的文件一致,只是暫存區和本地庫版本不一致 版本有如下幾種方式 (1) 直接使用表明版本的哈希值 (2) HEAD表明的是當前版本,經過^來表示向前一個版本, 多少個^表明向前回退多少個版本 (3) 經過~加上數字來表示向前n個版本
若是咱們不須要某些文件了,想要刪除掉,刪除文件不是在直接刪除,而是會新增一條記錄spa
git rm [文件] // 同時還須要提交暫存區和本地庫 git add . git commit -m "remark"
若是想查看當前版本與上一版本的差別,可使用這樣的命令命令行
git diff [文件名] / git diff [某一版本] [文件名] // 在命令行工具中經過 + 和 - 的方式來區分增長和刪除的內容
在開發的過程中每每不僅有一個分支,常常狀況下會設置主分支、測試分支、開發分支,當開發完成以後,再將本身建立的分支代碼合併到主分支,咱們能夠用如下方式來建立分支及合併code
git branch -v // 查看分支版本 git branch test // 建立一個名爲test的分支 git checkout test // 切換到test分支 // 在當前分支將內容編寫完成以後,一樣須要將代碼提交到暫存區和本地庫 git add . / git commit -m "test branch add info" git checkout master // master 是主分支的默認名稱 git merge test // 將test分支上的內容合併到master分支上 // 當合並的文件與被合併的文件發生衝突時,命令行工具右側展現的分支版本名稱爲(master | merging),此時須要自行去衝突文件進行修改,修改完成再執行 add 和 commit 操做
上面都是git在本地環境的基本操做指令,咱們常常還會將代碼上傳到 github、gitee、gitlab這些代碼的託管中心,那麼咱們怎麼經過這些託管中心來進行團隊的協做開發呢?這裏以github爲例,從兩方面來講,若是開發者都是團隊成員,簡單操做的流程以下所示
建立者將本地代碼push到遠程庫,團隊成員接收邀請加入團隊,而後經過git地址clone代碼到本地,而後當代碼進行了修改以後,再將更新的代碼 add / commit 提交到本地庫以後再push到遠程庫,建立者再經過pull操做將遠程庫的代碼取回,pull實際上是fetch+merge的兩個操做,fetch代碼取回代碼,merge表示合併。具體的操做流程以下
建立者 git remote -v // 查看遠程庫的別名地址 git remote add origin https://github.com/xxx/yyy.git // 此處是將xxx這個git地址設置別名爲origin, 之後拉取和推送這個git的代碼能夠直接使用別名 origin git push origin master // 將代碼推送到別名爲origin的master分支 團隊協做者 git clone github.com/alice/xxx.git // clone完成了三步操做, 將git代碼取回到本地, 初始化git倉庫, 設置remote別名 // 本地進行代碼開發之手,須要 add / commit 到本地庫 git push origin master 建立者 git pull origin master // 將遠程庫的代碼取回,等同於 git fetch origin master + git merge origin/master 兩個操做
有多個團隊成員的話,大致流程也和上述一致,主要就是提交到本地庫,推送以及合併。
還有一種團隊協做的狀況,貢獻代碼的同窗並非團隊的成員,而是外部支援,此時就來到跨團隊協做方式
建立者的push代碼的方式沒有變化,而跨團隊協做者由於不是團隊成員,無提交代碼的權限。
因此首先要要進行fork操做,至關於在本身的git倉庫上創建一個和對方同樣的項目,而後跨團隊者再從本身的git倉庫上將代碼clone下來,修改完成 add / commit 操做提交本地庫以後,在github上點擊pull requests操做。
最後建立者再進行審覈,代碼審覈無誤且有效以後再本身的倉庫中查看 pull request中經過merge將兩我的的代碼合併
以上就是git的總體流程和基本操做