Git原理之開篇

本文首發於公衆號「AntDream」,歡迎微信搜索「AntDream」或掃描文章底部二維碼關注,和我一塊兒天天進步一點點git

Git系列

Git是咱們平常開發的必備工具,是團隊協做的利器。Git使用普遍,而之因此如此流行,主要和它的一些突出的優勢分不開。服務器

真正的分佈式

咱們在使用Git時,不管是從遠程倉庫clone代碼,仍是把本地的代碼推到遠程的新倉庫,都是完成的克隆一份代碼。至關因而複製了一份代碼到別的地方,也就是備份。微信

並且Git是去中心化的,這個去中心化簡單理解就是每一份代碼都是能夠獨立編輯使用的,不會由於某一個機器上的代碼丟失了,而致使全部人都丟失代碼或沒法工做。分佈式

在 Git 中的絕大多數操做都只須要訪問本地文件和資源。工具

舉個極端的例子,假設公司的開發團隊的代碼都託管在GitLab上,若是有一天,GitLab忽然掛了不能用了,會出現什麼狀況?實際上對咱們開發影響不大,由於咱們每一個人的電腦上都有一份代碼,代碼並無丟失,你們仍是能夠繼續開發。post

有影響的是團隊協做,你們無法同步代碼了,也就是把你們開發的代碼合併在一塊兒看效果。而這個也很容易處理,由於咱們能夠本身搭一個Git服務器,這個也是比較簡單就能實現的。學習

Git是臺時光機

Git存儲了跟蹤文件的每次提交的快照,咱們每次提交一次(commit),Git就保存了一次。之後咱們能夠隨時回到某一次提交(Commit)。使用git log命令能夠查看當前分支的全部提交記錄。spa

這裏也引出了一個Git使用習慣,就是即時提交(Commit)。只有即時提交了,後續若是發現代碼有bug,才能回滾到最理想的位置。固然也不是隨便寫幾行就提交一下,那也是蠻累的。主要是一些必要的節點,好比完成一個小模塊小功能等。插件

Git的使用

Git使用起來也比較簡單,既能夠用命令行也能夠用第三方的工具,好比Android Studio自帶的Git插件,Mac下的Sourcetree等。可是儘管像Sourcetree已經作得很人性化很簡化了,在實際使用過程當中咱們仍是不免碰到一些奇怪的問題,有時候是軟件使用不熟悉,特別是使用一些相對高級一點的功能,好比回滾,合併衝突等。命令行

我以前也是很依賴Sourcetree,一來是由於若是用命令行,須要記住不少的命令;二來是由於Sourcetree這樣的軟件相對來講比較直觀,內心更踏實一些。

直到有一次,用Android Studio的Git插件推送的時候,推錯分支了!而後爲了回滾,在Sourcetree上忙了好一陣仍是沒有抹掉「犯罪證據」!後來仍是同事幫忙弄的,非常尷尬!

此次教訓讓我慢慢開始切換到用Git命令行爲主,Sourcetree爲輔的路子上來。如今基本沒有Git的問題困擾了。

用命令行的好處:
  1. 命令行其實熟悉了之後最簡單,由於不用去熟悉新的軟件工具,並且平時實際上也只須要其中幾個經常使用命令,沒有想象中的那麼難
  2. 不再會出現一些特殊的莫名其妙的意外,好比上面我碰到的,新建完分支直接被推到遠程的老分支,由於遠程找不到新分支。而若是用命令行推的話,Git就會報錯,並提示你解決方法了
  3. 學會命令行實際上是一件一勞永逸的事,不分平臺和系統,通通都同樣使用。
  4. 減小電腦負擔,Mac上Android Studio多開幾個工程就卡了,內存設置多大都沒用,若是爲了拉取推個代碼還得再開個軟件,那豈不是雪上加霜!萬一卡住了,多點了幾下誤操做怎麼辦?(固然,我實際上還沒遇到過)
  5. 高大上!哈哈...
幾個建議:
  • 儘可能過分到命令行,遇到問題,查一下對應的命令是啥,並記錄下來便於後期查詢,慢慢記錄積累,堅持個把月妥妥就熟悉了
  • 養成隨時提交(commit)的習慣,開發中完成一些小功能點就提交一下,避免幾天都不提交的壞習慣
  • 用熟悉Git命令之後,能夠嘗試學習一下Git的原理,好比Git是如何記錄每一個文件的版本變化的?Git回滾是怎麼回事?Git的本地倉庫和遠程倉庫是怎麼關聯起來的?等等這些問題搞明白之後,後續使用過程當中碰到一些問題就比較容易找到緣由和解決辦法。

正是基於以上的幾點,我準備把本身最近學習到的一些Git知識總結記錄下來,會分爲幾篇文章,但願本身之後碰到Git問題能快速的找到緣由並解決,也但願對你們有所幫助。


歡迎關注個人公衆號查看更多精彩文章!
複製代碼

AntDream
相關文章
相關標籤/搜索