本文**自: 文章
建立版本庫
初始化乙個git倉庫,使用git init命令。
新增檔案到git倉庫,分兩步:
第一步,使用命令git add ,注意,可反覆多次使用,新增多個檔案;
第二步,使用命令git commit,完成。
要隨時掌握工作區的狀態,使用git status命令。
如果git status告訴你有檔案被修改過,用git diff可以檢視修改內容。
版本回退
head指向的版本就是當前版本,因此,git允許我們在版本的歷史之間穿梭,使用命令git reset –hard commit_id。git必須知道當前版本是哪個版本,在git中,用head表示當前版本,上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100。
穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。
要重返未來,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本。
工作區和暫存區
工作區(working directory):就是你在電腦裡能看到的目錄。
版本庫(repository):工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。
git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第乙個分支master,以及指向master的乙個指標叫head。
前面講了我們把檔案往git版本庫里新增的時候,是分兩步執行的:
第一步是用git add把檔案新增進去,實際上就是把檔案修改新增到暫存區;
第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。
因為我們建立git版本庫時,git自動為我們建立了唯一乙個master分支,所以,現在,git commit就是往master分支上提交更改。
你可以簡單理解為,需要提交的檔案修改通通放到暫存區,然後,一次性提交暫存區的所有修改。
git是如何跟蹤修改的:每次修改,如果不add到暫存區,那就不會加入到commit中。
場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。
場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head file,就回到了場景1,第二步按場景1操作。
遠端倉庫
要關聯乙個遠端庫,使用命令git remote add origin git@server-name:path/repo-name.git;
關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;
此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改;
建立和合併分支
檢視分支:git branch
建立分支:git branch
切換分支:git checkout
建立+切換分支:git checkout -b
合併某分支到當前分支:git merge
刪除分支:git branch -d
當git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。
用git log –graph命令可以看到分支合併圖。
修復bug時,我們會通過建立新的bug分支進行修復,然後合併,最後刪除;
當手頭工作沒有完成時,先把工作現場git stash一下,然後去修復bug,修復後,再git stash pop,回到工作現場。
開發乙個新feature,最好新建乙個分支;
如果要丟棄乙個沒有被合併過的分支,可以通過git branch -d 強行刪除。
檢視遠端庫資訊,使用git remote -v;
本地新建的分支如果不推送到遠端,對其他人就是不可見的;
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠端的新提交;
在本地建立和遠端分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠端分支的名稱最好一致;
建立本地分支和遠端分支的關聯,使用git branch –set-upstream branch-name origin/branch-name;
從遠端抓取分支,使用git pull,如果有衝突,要先處理衝突。
命令git tag 用於新建乙個標籤,預設為head,也可以指定乙個commit id;
標籤管理
git tag -a -m 「blablabla…」可以指定標籤資訊;
git tag -s -m 「blablabla…」可以用pgp簽名標籤;
命令git tag可以檢視所有標籤。
命令git push origin 可以推送乙個本地標籤;
命令git push origin –tags可以推送全部未推送過的本地標籤;
命令git tag -d 可以刪除乙個本地標籤;
命令git push origin :refs/tags/可以刪除乙個遠端標籤
github使用
在github上,可以任意fork開源倉庫;
自己擁有fork後的倉庫的讀寫許可權;
可以推送pull request給官方倉庫來貢獻**。
忽略某些檔案時,需要編寫.gitignore;
.gitignore檔案本身要放到版本庫里,並且可以對.gitignore做版本管理!
Git學習 git常用命令
我們常用 p 選項展開顯示每次提交的內容差異,用 2 則僅顯示最近的兩次更新 還有許多摘要選項可以用,比如 stat,僅顯示簡要的增改行數統計 p 按補丁格式顯示每個更新之間的差異。stat 顯示每次更新的檔案修改統計資訊。shortstat 只顯示 stat 中最後的行數修改新增移除統計。name...
git常用命令學習
1.提交專案 1.遠端建立專案 git clone 鏈結 拷貝下來 git add 增加的檔案 新增本地新增內容 git commit m 注釋 或者 a進入圖形介面寫入注釋 git push original master 將本地檔案提交遠端倉庫 當我們後續改變公升級專案後,再次提交如下 git ...
Git 常用命令學習
學習了網上一些git的資料 包括廖雪峰的教程 總結一下 1 git和svn命令的對比 git clone svn checkout git checkout svn switch git push svn commit 2 git add readme.txt 是把readme.txt從worksp...