本文主要摘錄於廖雪峰的git教程,個別地方做了可能不恰當的修改或補充,主要方便自己回顧。檢視更詳細內容請移步廖老師部落格。同時,感謝廖老師寫出這麼好的入門指導。
(有彩蛋!!!)
一、熱身
1.初始化乙個git倉庫。先進入到乙個本地目錄下,然後使用git init命令將目錄初始化。
2.新增檔案到git倉庫,需要2條命令:
1)使用命令git add ,可反覆多次使用,新增多個檔案,也可一次新增多個檔案。
2)使用命令git commit -m "日誌內容"進行提交。
二、進入狀態
1.要隨時掌握工作區的狀態,使用git status命令。
2.如果git status告訴你有檔案被修改過,用git diff可以檢視修改內容。
注:cat ,是乙個linux命令,表示由第一行開始顯示檔案內容。類似的還有tac:從最後一行開始顯示;head:檢視頭幾行;tail:檢視尾幾行,等等。
三、玩點高階的: 版本回溯
1.head指向的版本就是當前版本,上一版本是head^,每上一版本加乙個^符號。使用命令「git reset --hard head^」,回溯到上一版本。使用命令「git reset --hard 版本號」,回溯到具體版本。
版本號不用寫全,寫前4、5位就可以了。
2.用「git log 」檢視某一檔案從第一次提交到當前版本的提交歷史,以便確定向前回溯到哪個版本。省略檔名,表示命令對該目錄下所有檔案生效。
3.用「git reflog 」檢視某一檔案的命令歷史(提交、回溯),以便確定向後回溯到哪個版本。
注:當前版本不一定是最後提交的版本。
補充內容:(以下來自segmentfault使用者xiaochao)
git不能把單獨的某個檔案恢復到指定的版本,如果要這要做,可以這樣:
1)git reset 版本號,這時候,會產生乙個和版本號對應的分支
2)git checkout到這個分支,把要恢復的檔案拷貝走
3)git checkout到原來的分支,把檔案再拷貝回來,覆蓋掉現在的檔案,然後git add,git commit
四、再說add與commit
1.每次修改檔案後,commit之前,都要先對修改的檔案進行add操作。如果不先add到暫存區,那麼無法commit。
2.在某一次修改檔案後,add到暫存區。然後又做了第二次修改,第二次修改後沒有add操作。這樣commit,只會將第一次的修改提交,第二次所做的修改不會被提交。
五、後悔藥
場景1:當你誤改了工作區某個檔案的內容,想將檔案回退到修改之前的樣子時,用命令git checkout -- 。(注意「--」不能少)
場景2:當你誤改了工作區某個檔案的內容,並且將其add到了暫存區,想將檔案回退到修改之前的樣子時,分兩步,第一步用命令git reset head /資料夾,這樣檔案就回到了工作區(即撤銷add)
,第二步按場景1操作即可。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回溯內容,不過前提是沒有合入到遠端庫。如果已push到遠端庫,想要回溯版本。先回退本地庫,再git push -f合入到遠端庫。(注意:本地庫回溯後,版本將落後遠端庫,必須使用強制推送覆蓋遠端庫,否則無法合入到遠端庫)
六、刪除檔案
1.git checkout其實是用本地版本庫里的檔案替換工作區/暫存區的檔案,無論工作區/暫存區的檔案經過修改還是刪除,只要版本庫中還有,都可以進行還原。還原後的檔案可以回溯到任意版本。
2.命令git rm用於刪除版本庫中的檔案。刪除後並且commit,就真的從本地版本庫刪除了。(如果乙個檔案已經被提交到版本庫,那麼你永遠不用擔心在工作區和暫存區誤刪,但是要小心,誤刪之前做的修改如果沒有add/commit是無法找回的。)
七、遠端版本庫
1.要關聯乙個遠端版本庫,使用命令git remote add origin git@server-name:path/repo-name.git。
2.關聯後,使用命令git push -u origin master第一次合入master分支的所有內容到遠端版本庫。此後,每次本地提交後,只要有必要,就可以使用命令git push推送最新修改。如果github上的檔案比本地版本庫的版本新,那麼push之前會提示先pull。執行git pull會進入vim讓填comment,不填直接:q退出即可,然後就可以push了。
(同理:如果乙個檔案已經被合入到遠端版本庫,那麼你永遠不用擔心在本地版本庫誤刪,當然,這只是我目前的理解,不一定準確。)
最後彩蛋,是我繪製的一張簡易的git工作流程示意圖:-)
彩蛋2,推薦一本《github入門與實踐》,作者大塚弘記,我剛看了一半,非常好的入門書。
本作品採用知識共享署名 4.0 國際許可協議進行許可。
GIT 快速上手
建立linux的大佬 linus 花了兩周時間自己用c寫的乙個分布式版本控制系統。在2002年以前,世界各地的志願者把源 檔案通過diff的方式發給linus,然後由linus本人通過手工方式合併 為什麼linus不把linux 放到版本控制系統裡呢?不是有cvs svn這些免費的版本控制系統嗎?因...
git快速上手教程
前幾周我第一次同時推進幾個任務,結果迷失在git版本的海洋中不能自拔。後來在同事的幫助下終於脫坑,在此把一些git的簡明用法分享給git新手們。git是用來進行版本控制的,對於同乙個專案,不同的電腦上可以存有不同的版本,同一臺電腦上也可以儲存多個版本。每個版本或者有唯一的父版本,或者由兩個版本合併而...
Git快速上手教程
首先在你的github上新建專案。然後安裝好git後,找到你專案的資料夾輸入如下命令 git init git commit m frist commit git remote add origin 你的專案位址.git git push u origin master 當你遇見這個問題時,原因是你...