天天看點

Git常用指令的學習

# 一、git在平時使用中常見的指令這個是我在看完一篇文章或者說是一本小書後,防止自己忘記,加深一下印象寫下的,自己之前也一直在用git管理項目代碼,一般托管到[codingnet](http://coding%E3%80%82net)上面,或者有時候托管到[github](http://www.github.com),廢話少說 ,開始指令!配置指令----一般每個使用者都需要配置自己的使用者名和郵箱,這樣送出代碼的時候才知道是誰送出了。 **- $git config --global user.name "your name"** 配置你的名稱 **- $git config --global user.email "[email protected]"** 配置你的郵箱初始化本地倉庫-------通過 指令進入到自己建立的目錄 執行:**$git init** //*初始化本地倉庫*完成後,你會發現你的,目錄下面會多一個.git檔案,這個檔案不能動他,他裡面儲存這個git倉庫的重要資訊,他叫版本庫。在這裡順便說一下,git是分布式版本控制系統,相比之下我們以前用的svn是集中式版本管理系統,集中式版本管理系統,代碼版本的管理都是在一個遠端的中央伺服器中,必須聯網才可以工作,本地是不支援代碼版本的管理的 ,而分布式版本控制系統,根本沒有“中央伺服器 ”,每一個本地倉庫都是一個完整的版本控制伺服器,本地記錄的所有人的對代碼的修改操作,是以相對于集中式的管理系統svn而言,git的安全性要高很多,因為每個本地倉庫都記錄的完整的版本控制,及時有其他的本地倉庫當機,也沒有關系,随便找一個人拷一份就OK了,除此之外,git還有強大的分支管理,在後面會講到。## 送出代碼 ##比如我現在的git倉庫裡面添加一個 a.txt檔案,現在要送出修改(添加删除修改檔案内容,都屬于版本庫的修改)$git add a.txt *送出到暫存區* $git commit -m "送出了a.txt" //送出到版本庫檢視版本庫狀态 可以告訴你哪些檔案被修改了,$git status檢視版本庫中a.txt的變化**$git diff a.txt**檢視a.txt檔案一共有幾個版本送出到git倉庫中了 **$git log** 簡介的檢視a.txt檔案一共有幾個版本送出到git倉庫中了**$git log --preptty=oneline**如果錯誤的送出了a.txt的修改可以使用**$git reset --hard HEAD^ 退回上一個版本****$git reset --hard HEAD^^ 退回上上一個版本****$git reset --hard HEAD^^^退回上上上一個版本****$git reset --hard HEAD~100退回上100一個版本**其實我們有一種更好的方法,退回到想要的版本:先通過 git log 查詢到要退回版本的commitid,然後 用git reset --hard commitid可以通過reflog查詢以前的操作指令記錄git reflog工作區 、暫存區、版本庫------------工作區就是你目前的目錄下暫存區是 你代碼修改送出到版本庫的一個中間區域,相當于add操作後,版本的修改是送出到暫存區的,當commit後才會将修改 送出版本庫。## 撤銷修改 ##git checkout a.txt這裡是要分兩種情況的,第一種是代碼還沒有add,即還沒有送出到暫存區,此時,撤銷的修改後就回到和版本庫一樣的狀态。第二種是一件add修改到暫存區了,那此時的撤銷就是傳回到送出到暫存區前一時刻的狀态。如果此時的修改已經commit了,即送出到版本庫了,那此時的撤銷則必須用 reset指令了:git reset HEAD a.txt 傳回到最前的一個版本庫(同時已經撤銷了暫存區中的修改)## 删除檔案與恢複 ##删除檔案git rm a.txtgit commit -m "remove a.txt"如果想恢複删除的檔案git checkout -- a.txt 分支管理----分支管理在版本控制中很重要,尤其是你接到一個新的功能開發的任務時,為了不影響現在的master分支的代碼,最好是建立一個分支,等新功能開發完畢後,再合并merge到master分支上。## 建立分支 ##git checkout -b dev 上面的代碼代表兩步 1、建立分支dev 2、切換到分支devgit branch dev 建立分支git checkout dev 切換分支 **檢視分支**git branch**合并分支**git merge dev 在目前分支上合并dev分支**删除分支** git branch -d branchname 由于今天精力有限,先寫到這。後面會繼續寫: **如何處理合并中的沖突解決** **如何在處理不同類型或者說不同情況下的分支** **如何在git下 多人協作開發** **如何抓取分支** **标簽管理**-