四、對遠端倉庫的操作
五、易混淆點總結
六、參考資料
git 是乙個分布式版本控制系統,每一台安裝了 git 的電腦都能擁有某個專案每個版本的每個檔案,所以每台安裝了 git 的電腦都能擁有備份。
本地倉庫:資料夾.git
裡用於存放專案每個版本的內容的倉庫。
工作區:專案檔案所在的根目錄。
暫存區:資料夾.git
裡面的乙個專門用於存放被修改過的檔案並可一次性提交到本地倉庫的「緩衝區」。
git init
:將當前目錄下的所有檔案或資料夾設定為 git 的管理物件。
git add /--all
:新增修改的檔案到資料夾.git
裡面的暫存區。
git commit -m ""
:將暫存區裡修改的檔案一次性提交到資料夾.git
裡面的本地倉庫,提交後暫存區將被清空。
git status
:檢視工作區檔案的增刪改情況,工作區哪些檔案還沒提交到暫存區,暫存區都有哪些檔案或暫存區的檔案是否已提交到本地倉庫。
git diff ()
:檢視工作區的檔案與暫存區的檔案相比發生了哪些內容上的變動。
git log (--pretty=oneline)
:檢視本地倉庫都有哪幾個版本,以及它們的作者和提交日期。
git reflog
:檢視本地倉庫所有分支的操作記錄。commit、checkout、rebase、pull 四種操作都會被記錄在 reflog 裡面。
git reset --hard
:在本地倉庫的所有版本裡選擇乙個編號為id
的版本匯入工作區。部分可用
head~
或head
後面緊跟著 n 個異或符號^
代替,表示當前版本往前數第 n 個版本。
git checkout --
:在修改尚未被提交到暫存區時,撤銷工作區指定檔案的修改,等同於手動增刪改將工作區恢復原狀。
git reset head
:在已提交修改檔案到暫存區的情況下,清除暫存區中該檔案的內容,返回到工作區檔案已修改但還沒提交到暫存區的狀態。
所以恢復工作區的某個檔案有三種情況:
一是被修改的檔案尚未提交到暫存區,可手動對檔案進行增刪改或直接執行命令git checkout --
。
二是被修改的檔案已提交到暫存區但還沒提交到本地倉庫,可執行命令git reset head
清除暫存區中該檔案的內容,然後執**況一對應的操作。
三是被修改的檔案已提交到本地倉庫但還沒推送到遠端倉庫,可直接回退到前乙個版本。(目前沒有發現一種能先刪除當前版本、將暫存區恢復到最近一次commit
操作前的狀態的方法)
git rm
:刪除工作區中的某個檔案。
git rm -f
:刪除工作區中的某個檔案暫存區若有該檔案的話也會被刪除。
在 git 中,分支就是乙個指向某個版本的指標,而head
是乙個指向分支指標的指標。
git checkout -b 《新分支名》
:建立新分支並切換到新分支,相當於先執行命令git branch 《新分支名》
後執行命令git checkout 《新分支名》
。(建立乙個新指標並將其指向master
指標所指向的版本,並且讓head
指標指向該新指標)
git checkout 《分支名》
:切換到特定分支。(將head
指向指定的分支指標)
git branch 《新分支名》
:建立乙個新分支。
git branch
:檢視當前分支。
git branch -d 《分支名》
:刪除已經合併到其他分支的指定分支。(銷毀特定指標,而不是銷毀某個版本)
git branch -d 《分支名》
:強行刪除尚未合併到其他分支的指定分支。
git branch -r
:檢視遠端倉庫分支。
git branch -a
:檢視本地和遠端倉庫所有分支。
git merge 《分支名》
:將指定分支合併到當前分支。(找到特定指標指向的版本,然後將head
指向的指標直指該版本)
git merge --no-ff -m "《版本資訊》" 《分支名》
:將指定分支與當前分支合併為乙個新版本並提交,不抹除原有提交版本。
git rebase 《分支名》
:以指定分支最新乙個版本為起點,將當前分支拼接在其後面。
git stash
:保留工作現場。
git stash pop
:恢復工作現場。
git remote add 《自定義遠端倉庫記號》
:新增乙個自定義記號,該記號代表指定的遠端倉庫的 url。
git remote rm 《遠端倉庫記號》
:刪除指定遠端倉庫的記號。
git remote
:檢視該專案下所有自定義的遠端倉庫記號。
git remote show 《遠端倉庫記號》
:顯示指定遠端倉庫的資訊。
git remote rename 《遠端倉庫原有記號》 《遠端倉庫新記號》
:更改指定遠端倉庫的記號。
git clone 《遠端倉庫的 url> 《本地目錄》
:將指定的遠端倉庫拷貝到本地指定目錄下。
git clone 《遠端倉庫的 url>
:將指定的遠端倉庫拷貝到本地當前目錄下。
git fetch 《遠端倉庫記號》 《遠端倉庫分支名》
:將指定遠端倉庫指定分支的更新部分拷貝到本地倉庫中。
git fetch 《遠端倉庫記號》
:將指定遠端倉庫所有分支的更新部分拷貝到本地倉庫中。
使用該命令後,可用諸如 origin/master 的記號表示遠端倉庫的分支。
用該命令抓取了記號 origin 的遠端倉庫的 master 分支到本地之後,則可用命令git checkout origin/master
切換到遠端分支進行檢視,檢視完可執行命令git checkout master
返回本地的 master 分支。
git pull 《遠端倉庫記號》 《遠端倉庫分支名》:《本地倉庫分支名》
:取回遠端倉庫指定分支的更新,與本地倉庫的指定分支合併。如果指定的本地分支是當前分支,則可省略「:《本地倉庫分支名》」部分,直接輸入「git pull 《遠端倉庫記號》 《遠端倉庫分支名》
」。
使用該命令後,可用諸如 origin/master 的記號表示遠端倉庫的分支。
該命令等同於先執行命令「git fetch
」,後執行命令「git merge
」。
執行完git pull
操作後,本地倉庫乙個分支 b 會和遠端倉庫被抓取過來的分支 a 建立跟蹤關係。若在分支 b 下執行合併操作,則分支 a 仍保持不變,不會和分支 b 同步;若在分支 b 下執行 commit 操作,則分支 a 會自動和分支 b 同步。
git push 《遠端倉庫記號》 《本地倉庫分支名》:《遠端倉庫分支名》:將本地倉庫的指定分支推送到遠端倉庫的指定分支。
git push 《遠端倉庫記號》 《本地倉庫分支名》:將本地倉庫的指定分支推送到遠端倉庫的同名分支,遠端倉庫若存在該同名分支則直接推送,若不存在則先建立同名分支再推送。
git push 《遠端倉庫記號》 :《遠端倉庫分支名》:刪除遠端倉庫指定分支。
若本地倉庫中有諸如 origin/master 的遠端倉庫分支記號,則執行完該操作後,所有遠端倉庫分支記號都會和遠端倉庫進行同步。
git reset
總結:
git checkout
總結:
git checkout 《版本號》 《檔名》
:用特定版本的特定檔案作為備份恢復,該恢復既會影響工作區也會影響暫存區。
git checkout 《分支名》
:跳轉到特定分支的最新版本,工作區會被更改為該該分支最新版本的內容。
《git教程》 廖雪峰
《git遠端操作詳解》 阮一峰
Git基本操作
1.初始化倉庫 git init 2.配置作者資訊 git config global user.email youremail corp.com git config global user.name yourname 3.新增檔案到暫存區 git add git add 新增所有檔案到暫存區 4...
git基本操作
1.先建乙個資料夾 mikdir gittest 這時就會有乙個gittest資料夾,cd gittest 進入這個資料夾 ls一下,就會看到gittest下沒有東西 2.生成乙個git git init cat git 顯示一下所有git 3.建乙個檔案 touch readme.md 這時git...
Git基本操作
21 nov,錦州 同生活中的許多偉大事件一樣,git 誕生於乙個極富紛爭大舉創新的年代。linux 核心開源專案有著為數眾廣的參與者。絕大多數的 linux 核心維護工作都花在了提交補丁和儲存歸檔的繁瑣事務上 1991 2002年間 到 2002 年,整個專案組開始啟用分布式版本控制系統 bitk...