Step 1.Git 是什么?
Git是目前世界上最先進的分布式版本控制系統。
版本控制系統是任何能讓你了解到一個文件的歷史,以及它的發展過程的系統。
Step 2.集中式vs分布式
-
集中式
集中式版本控制系統,版本庫是集中存放在中央服務器的,工作時用的都是自己的電腦,所以要先從中央服務器獲取最新版本,然后開始工作,工作完了,再把自己的版本推送到服務器。**
集中式版本控制系統最大的問題就是必須聯網才能工作
如果集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了。
分布式
分布式版本控制系統,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。
在協作中,如果你自己在電腦上修改了文件A,你的同事也在電腦上修改了文件A,這時你倆之間只需要把自己的修改推送給對方,就可以看到對方的修改了。
分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。
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
暫時將未提交的變化移除,稍后再移入