1. 程式人生 > >廖雪峰之Git備忘錄

廖雪峰之Git備忘錄

安裝Git Windows安裝完成後,在命令列輸入:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

編寫一個readme.txt檔案,放到learngit目錄下(子目錄也行)。 第一步,用命令git add告訴Git,把檔案新增到倉庫: (無顯示錶示成功)

$ git add readme.txt

第二步,用命令git commit告訴Git,把檔案提交到倉庫: (可以多次add,最後所有檔案一次性commit)

$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+) 
 #1個檔案被改動(我們新新增的readme.txt檔案),插入了兩行內容(readme.txt有兩行內容)
 create mode 100644 readme.txt

-m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裡方便地找到改動記錄。 git commit –amend -m“追加的註釋,會覆蓋上次的註釋” 如果上一個註釋寫錯,可以這樣進行修改和追加。 時光穿梭機 git status命令可以讓我們時刻掌握倉庫當前的狀態 本地的檔案是+,即工作區的檔案,版本庫的檔案是-。 git diff readme.txt顯示指定內容的前後變化 git diff HEAD顯示出上次提交節點的差別 git diff commit_id_1 commit_id_2用來比較2個commit之間區別 git diff檢查的是工作區與暫存區的差異【沒add之前】 git diff --staged

暫存與倉庫的差異【add之後,commit之前】

版本回退 Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^, 上上一個版本就是HEAD^^, 當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100。 git reset --hard commit_id,Git在內部有個指向當前版本的HEAD指標,允許在版本的歷史之間穿梭. 穿梭前,用git loggit log可以檢視提交歷史,以便確定要回退到哪個版本。 要重返未來,用git reloggit log檢視命令歷史,以便確定要回到未來的哪個版本。 [工作區和暫存區] 在這裡插入圖片描述

git add新增檔案,實際上是把檔案修改新增到暫存區; git commit提交更改,實際上是把暫存區的所有內容提交到當前分支。 撤銷修改 git checkout – file可以丟棄工作區的修改。 一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;即將未add提交的修改內容全部還原 一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。即執行該指令會修改到執行好add後。 總之,就是讓這個檔案回到最近一次git commitgit add時的狀態。 git checkout -- file命令中的--很重要,沒有--,就變成了“切換到另一個分支”的命令. git reset HEAD <file>可以把暫存區的修改撤銷掉(unstage),重新放回工作區。 小結 場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout – file。 場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD ,就回到了場景1,第二步按場景1操作。 場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠端庫。 刪除檔案 rm刪除檔案,只刪除了工作區的檔案 刪錯了就git checkoutgit checkout其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。 git rm:刪除一個檔案。不僅刪除了檔案,而且還新增到了暫存區。需要先git reset HEAD <file>,然後再git checkout -- <file>。想徹底刪除先git rm,再git commit 三、遠端倉庫 註冊一個GitHub賬號,就可以免費獲得Git遠端倉庫。 Git本地倉庫和Git遠端倉庫通訊,需要SSH進行身份認證。設定 新增遠端庫 本地建立一個Git倉庫後,再在GitHub建立一個Git倉庫,並且讓這兩個倉庫進行遠端同步。 1、登陸GitHub,然後,在右上角找到“Create a new repo”按鈕,建立一個新的倉庫。 在Repository name填入learngit,其他保持預設設定,點選“Create repository”按鈕,就成功地建立了一個新的Git倉庫。 2、把本地倉庫的內容推送到GitHub倉庫,在本地的learngit倉庫下執行命令: $ git remote add origin [email protected]:zwy/learngit.git 把本地庫的所有內容推送到遠端庫上

git push -u origin master

把本地庫的內容推送到遠端,用git push命令,實際上是把當前分支master推送到遠端。由於遠端庫是空的,我們第一次推送master分支時,加上了-u引數,Git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。 小結

  1. 要關聯一個遠端庫,使用命令git remote add origin [email protected]:path/repo-name.git
  2. 關聯後,使用命令git push -u origin master第一次推送master分支的所有內容
  3. 此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改 從遠端庫克隆 從零開發,最好的方式是先建立遠端庫,然後從遠端庫克隆。 首先,登陸GitHub,建立一個新的倉庫,名字叫gitskills. 勾選Initialize this repository with a README,這樣GitHub會自動為我們建立一個README.md檔案。建立完畢後,可以看到README.md檔案.然後用命令git clone克隆一個本地庫。 $ git clone [email protected]:zwy/gitskills.git 進入gitskills目錄看看,已經有README.md檔案了
$ cd gitskills
$ ls
README.md

要克隆一個倉庫,首先必須知道倉庫的地址,然後使用git clone 地址命令克隆。 Git支援多種協議,包括https,但通過ssh支援的原生git協議速度最快。 四、分支管理 分支就是科幻電影裡面的平行宇宙,當你正在電腦前努力學習Git的時候,另一個你正在另一個平行宇宙裡努力學習SVN。 建立與合併分支