Git 工作原理及常用指令

Step 1.Git 是什么?

  • Git是目前世界上最先進的分布式版本控制系統。

  • 版本控制系統是任何能讓你了解到一個文件的歷史,以及它的發展過程的系統。


Step 2.集中式vs分布式

  • 集中式

    • 集中式版本控制系統,版本庫是集中存放在中央服務器的,工作時用的都是自己的電腦,所以要先從中央服務器獲取最新版本,然后開始工作,工作完了,再把自己的版本推送到服務器。**

    • 集中式版本控制系統最大的問題就是必須聯網才能工作

    • 如果集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了。

a8ac39f7-11b9-4e08-ad05-faa30e76015b.jpg
  • 分布式

  • 分布式版本控制系統,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。

  • 在協作中,如果你自己在電腦上修改了文件A,你的同事也在電腦上修改了文件A,這時你倆之間只需要把自己的修改推送給對方,就可以看到對方的修改了。

  • 分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。

279a5ded-1cb7-45af-b8a5-9e92044483eb.jpg

Step 3.工作區和暫存區

  • 第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;

  • 第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。

  • 情景一:如果修改程式后還沒有執行 git add 將代碼加入暫存區撤銷的方法:

    1、用 git status 查看狀態

    2、執行git checkout -- app/controllers/admin/products_controller.rb意思是把app/controllers/admin/products_controller.rb文件修改全部撤銷。

  • 情景二:如果**修改程式后還 git add到暫存區了撤銷的方法:

    1、用 git status查看一下狀態

    2、執行 git reset HEAD <目錄名>可以把暫存區的修改撤銷掉(unstage),重新放回工作區

    3、執行**git checkout -- ******<目錄名>****撤銷修改。


Step 4.版本回退

  • 執行 git log 命令查看提交日志

    • 如果嫌輸出信息太多,可以加上git log--pretty=oneline``參數

    • 你看到的一大串類似1094adb...的是commit id(版本號)

  • 回退版本 **git reset --hard HEAD~100回到第幾個版本就輸入幾

  • 如果想前進到某個版本號需要找到該版本的 commit id號,版本號寫前6位就可以。

    • 如果找不到版本號怎么辦,可以輸入git reflog查看你輸入的每一次命令。

    • 執行 git reset --hard 1094a0可以看到該版本又回來了


Step 5.刪除文件

  • 在Git中,刪除一個文件的方法

    • 第一種直接在文件管理器中刪除

    • 第二種執行 rm <文件目錄名>,確定從版本庫中刪除文件,那就執行 git rm刪掉,并且git commit

    • 如果誤刪了文件可以執行 git checkout -- 文件名還原。

    • 命令git rm用于刪除一個文件。如果一個文件已經被提交到版本庫,那么你永遠不用擔心誤刪,但是要小心,你只能恢復文件到最新版本,你會丟失最近一次提交后你修改的內容


Step6.常用指令

新建/刪除

  • git init初始化一個git項目

  • git add將新建的文件添加到暫存區

  • git commit -m將暫存區文件提交到git倉庫

  • git checkout -b 創建并切換到分支

  • git checkout 切換分支

  • git branch查看所有分支

  • git merge 合并指定分支到當前分支

  • git branch -D 刪除分支

  • git branch -r 查看遠程分支

  • git branch -a列出所有本地分支和遠程分支

  • git checkout -切換到上一個分支

查看信息

  • git status可以用來查看每一步操作后文件的狀態

  • git log查看每次提交的內容

  • git log --stat顯示commit歷史,以及每次commit發生變更的文件

  • git diff工作區(work dict)和暫存區(stage)的比較

  • git reflog查看每一次執行的命令

版本回退與前進

  • git reset --hard HEAD~1回退到上一個版本

  • git reset --hard commit_id前進到某個版本

撤銷

  • git checkout -- 文件名 將****文件修改全部撤銷(前提是沒有將文件加到暫存區)

  • git reset HEAD <目錄名>可以把暫存區的修改撤銷掉

  • git stash git stash pop 暫時將未提交的變化移除,稍后再移入

參考1
參考2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容