摘要:使用此命令能看到那些修改被暫存到了哪些沒有哪些文件沒有被到。需要說明一點,是本地的,不會通過命令上傳到上。查看現有的所有儲藏,此命令顯然暗示了可以多次保存工作進度,并用在恢復時候選擇。
Git 版本庫原理
Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。
工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫
#創建文件 $ mkdir myapp #進入文件 $ cd myapp #初始化代碼倉庫 $ git init #把需要提交的所有修改放到暫存區(Stage) $ git add file #提交所有文件 #$ git add . #提交所有.js格式文件 #$ git add *.js #強制添加 #$ git add -f file #提交代碼 $ git commit -m "commit info"查看
#查看歷史記錄,git log命令顯示從最近到最遠的提交日志 $ git log #查看分支合并圖 $ git log --graph #Git提供了一個命令git reflog用來記錄你的每一次命令: $ git reflog #git status命令用于顯示工作目錄和暫存區的狀態。使用此命令能看到那些修改被暫存到了, 哪些沒有, 哪些文件沒有被Git tracked到。git status不顯示已經commit到項目歷史中去的信息。 $ git status #當暫存區中沒有文件時,git diff比較的是,工作區中的文件與上次提交到版本庫中的文件。 #當暫存區中有文件時,git diff則比較的是,當前工作區中的文件與暫存區中的文 $ git diff #比較工作區中的文件與版本庫中文件的差異。HEAD指向的是版本庫中的當前版本,而file指的是當前工作區中的文件。 $ git diff HEAD -- file版本回退:
#Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當回退版本較早時可以寫成HEAD~100。 #版本回退 $ git reset --hard HEAD^ #取消回退,commitId為你想要回到的未來版本號 $ git reset --hard commitId撤銷修改
命令git checkout ——file 把文件在工作區的修改全部撤銷,這里有兩種情況:
* 一種是file修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態; * 一種是file已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。
#文件在工作區的修改全部撤銷 $ git checkout --file刪除文件
命令git rm用于從版本庫刪除一個文件。
如果一個文件已經被提交到版本庫,那么你永遠不用擔心誤刪,但是要小心,你只能恢復文件到最新版本,你會丟失最近一次提交后你修改的內容。
#從版本庫刪除一個文件 $ git rm file
提示:先手動刪除文件,然后使用git rm添加遠程倉庫和git add 效果是一樣的。
#關聯一個遠程庫 $ git remote add origin #第一次將本地庫的所有內容推送到遠程庫上 $ git push -u origin master [-f] #此后,每次本地提交后,就可以使用命令推送最新修改 $ git push origin master從遠程庫克隆
# git clone [url]
比如,要克隆 Ruby 語言的 Git 代碼倉庫 Grit,可以用下面的命令:
#這會在當前目錄下創建一個名為grit的目錄,其中包含一個.git的目錄,用于保存下載下來的所有版本記錄,然后從中取出最新版本的文件拷貝。如果進入這個新建的grit目錄,你會看到項目中的所有文件已經在里邊了,準備好后續的開發和使用。 $ git clone git://github.com/schacon/grit.git
如果希望在克隆的時候,自己定義要新建的項目目錄名稱,可以在上面的命令末尾指定新的名字:
#唯一的差別就是,現在新建的目錄成了mygrit,其他的都和上邊的一樣。 $ git clone git://github.com/schacon/grit.git mygrit分支管理
創建+切換分支:
$ git checkout -b
創建分支:
$ git branch
切換分支
$ git checkout
查看分支:
#git branch命令會列出所有分支,當前分支前面會標一個*號。 $ git branch
切換分支
#切換回master分支 $ git checkout
合并某分支到當前分支
$ git merge
刪除分支
$ git branch -d
Git分支十分強大,在團隊開發中應該充分應用。
合并分支時,加上—no-ff參數就可以用普通模式合并,合并后的歷史有分支,能看出來曾經做過合并,而fast forward合并就看不出來曾經做過合并。
儲藏可以獲取你工作目錄的中間狀態——也就是你修改過的被追蹤的文件和暫存的變更——并將它保存到一個未完結變更的堆棧中,隨時可以重新應用。
現在你想切換分支,但是你還不想提交你正在進行中的工作;所以你儲藏這些變更。為了往堆棧推送一個新的儲藏,只要運行git stash。把所有未提交的修改(包括暫存的和非暫存的)都保存起來,用于后續恢復當前工作目錄。
git stash
需要說明一點,stash是本地的,不會通過git push命令上傳到git server上。
查看現有的所有儲藏,此命令顯然暗示了git stash可以多次保存工作進度,并用在恢復時候選擇。
$ git stash list
重新應用已經實施的儲藏(不刪除儲藏)
#如果你想應用更早的儲藏,你可以通過名字指定它,像這樣:git stash apply stash@{2}。如果你不指明,Git 默認使用最近的儲藏并嘗試應用它 $ git stash apply [--index] []
重新應用已經實施的儲藏(刪除儲藏)
#如果不使用任何參數,會恢復最新保存的工作進度,并將恢復的工作進度從存儲的工作進度列表中清除。 #如果提供參數(來自git stash list顯示的列表),則從該 中恢復。恢復完畢也將從進度列表中刪除 。 #選項--index除了恢復工作區的文件外,還嘗試恢復暫存區。 $ git stash pop [--index] [ ]
刪除一個存儲的進度。(默認刪除最新的進度)
$ git stash drop []
清空當前所有的stash
$ git stash clear
基于儲藏進度創建分支。
$ git stash branch多人協作
查看遠程庫的信息:
#或者用git remote -v 可顯示更詳細的信息 $ git remote
推送分支,該分支上的所有本地提交推送到遠程庫
$ git push origin
從本地推送分支,如果推送失敗,先抓取遠程的新提交:
$ git pull
推薦閱讀:
2019年前端面試題-01
2019年前端面試題-02
2019年前端面試題-03
2019年前端筆試題
我是Cloudy,年輕的前端攻城獅一枚,愛專研,愛技術,愛分享。
個人筆記,整理不易,感謝閱讀、點贊和收藏。
文章有任何問題歡迎大家指出,也歡迎大家一起交流前端各種問題!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74905.html
摘要:自動化打包上文章概述本文分為上下兩篇,上篇主要介紹一些常用的插件也是此次打包主要用的插件,而下篇主要以一個項目為例,從本地出合適的版本,壓縮合并到最后打成包,發送至指定目錄,做一個全面的演示。 gulp自動化打包(上) 文章概述 本文分為上下兩篇,上篇主要介紹一些常用的gulp插件(也是此次打包主要用的gulp插件),而下篇主要以一個demo項目為例,從本地checkout出合適的g...
閱讀 3766·2021-11-11 11:02
閱讀 3496·2021-10-11 10:57
閱讀 3608·2021-09-22 16:00
閱讀 1843·2021-09-02 15:15
閱讀 1322·2019-08-30 15:56
閱讀 1005·2019-08-30 15:54
閱讀 2731·2019-08-30 12:43
閱讀 3539·2019-08-29 16:06