常用指令彙總
一、 回退到某一個節點,並以下列指令:
"$N 保留某節點#修改如:Git reset –hard HASH 返回某一節點,保留修改。 二、 所使用所有的修飾。沒有提交的,都回到原來的狀態。 Git checkout .Git checkout 版本庫 表示切換版本庫如:git checkout dev 切換到dev版本庫Git checkout 檔案位址 表示取消該檔案的修改如git checkout backend/controller/site #三、 檢視分支Git branch 不含參數:列出本地分支,目前所在的分支前面會有一個*號五、 處理中刪除問題#問題出現的原因是window與Luxan 處理LF問題#問題出現的原因是window和Luxin如下:設定全域變數git config --global core.autocrlf false查看全域變數git config –global –l來檢視全域變數mkdir learngit //建立一個資料夾cd learngit //切換目前目錄pwd //顯示目前目錄完整路徑git init //初始化目錄ls - ah //顯示目前目錄所有文件,包括隱藏檔案cd.>readme.txt //建立一個空檔案git add readme.txt //把檔案加入git倉庫git commit -m “wrote a readme file” //提交文件,加上改動說明git status //查看目前倉庫檔案改動狀態git diff / /是工作區(work dict)和暫存區(stage)的比較git diff --cached //是暫存區(stage)和分支(master)的比較#修改檔案內容後git status會提示use "git add" and/or "git commit -a" 注意先add後commit,不可以直接commitgit log //查看git提交記錄,包含時間和提交人等詳細資料git log --pretty=oneline //只查看版本號碼和提交說明git reset --hard HEAD^ //回滾上個版本git reset --hard HEAD^^ //回滾上上版本git reset --hard HEAD~100 //回滾前100個版本git reset - -soft HEAD //回退時不重置快取區與工作區git reset --mixed HEAD //回退時重置快取區, 預設選項git reset -- hard HEAD //回退時重置快取區和工作區git reset //不指定HEAD, 用來清空快取區的修改git reset filename //清空快取區指定檔案的修改git reset --hard //不指定HEAD, 用來清空工作區和快取區的修改git reset --hard filename //清空工作區和快取區指定檔案的修改cat readme.txt //檢視檔案內容 回滾後如果想撤回,有兩種方式1)需要在沒有關閉原來的終端窗口,找回最新的版本號,輸入前面幾位數字,例如git reset --hard ec6980a2)關閉了終端機窗口,重新打開,輸入git reflog ,查看操作的每一筆記錄,找回版本號回滾 git checkout -- file //撤銷工作區操作,有兩種情況,1、未加入快取區前,是撤銷本機工作區修改,2、已新增快取區後,是撤銷快取後的修改,還原快取的版本git checkout -- file指令中的--很重要,沒有--,就變成了「切換到另一個分支」的命令git checkout branch //切換branch, 同時重置快取區和工作區, 如果工作區有修改沒有提交, 需要先commit或stashgit checkout branch --force //切換branch, 同時重置快取區和工作區git checkout --force //不指定branch, 用來清空工作區的修改(快取區不變, 如果之前有add, 則工作區與快取區一致) git reset HEAD fileName //可以把暫存區的修改撤銷掉( unstage) rm test.txt //檔案總管上刪除文件,注意本地刪除要與倉庫對應git rm text.txt //刪除遠端倉庫文件,然後提交git commit
git checkout -- test.txt //假設本地rm誤刪了文件,可以用指令從倉庫複製一份最新到本地,用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」
ssh-keygen -t rsa -C “liwenxin@foreveross.com" //設定本地關聯的帳號資訊 ,一路回車,不要設密碼直接為空。
open ~/.ssh //mac開啟主目錄的ssh
cd ~/.ssh //如果前面的步驟不小心輸入了密碼,可以參考以下方式重新設為空密碼
ssh-keygen -p -f id_rsa //依需求輸入一次舊密碼兩次新密碼
git remote add origin git@github.com:gz -jam/learngit.git //替換成你自己的GitHub帳號名,本地關聯遠端函式庫
git remote rm origin //如果關聯錯了 或 需要重新綁定
git remote add origin git@github.com:michaelliao/learngit.git //可以重新綁定
git push -u origin master //本地庫的所有內容推送到遠端程式庫,輸入yes確認,把當前分支master推送到遠程,由於遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,也會把本地的master分支和遠端的master分支關聯起來,在以後的推送或拉取時就可以簡化指令。
git push origin master //第二次開始可以不用-u
git clone git@github.com:michaelliao/gitskills.git //複製遠端倉庫,Git支援多種協議,預設的git://使用ssh,但也可以使用https等其他協議。例如https://github.com/gz-jam/gitskills.git
git checkout -b dev //建立分支並切換目前分支到dev,相當於執行了兩條指令,如git branch dev 和git checkout dev
git branch //查看目前專案的所有分支,前面有*代表目前生效的分支
git merge dev //用來合併指定分支到目前分支
git branch -d dev //合併後可以考慮刪除多餘項目分支
git branch -D dev //分支提交檔案未合併,如果刪除會提示尚未合併,是否要強行刪除 注意大寫D
當兩邊分支各自在相同文件有提交內容,Git無法執行“快速合併”,此時需要先執行git status,Git用< <<<<<<,=======,>>>>>>>標記出不同分支的內容,調整完後重新git add 文件,然後git commit提交文件即可解決衝突
git log --graph --pretty=oneline --abbrev-commit //可以看到分支的合併情況
git log --graph //這指令也可以看到分支合併圖
git merge --no-ff -m "merge with no-ff" dev //停用Fast forward模式,Git就會在merge時產生一個新的commit
git stash //目前分支工作未完成但又不想提交倉庫,可先用指令保存,保證切換其它分支不會導致程式碼遺失
git stash list //查看stash內容,恢復的方式有兩種,一是用git stash apply stash@{0}恢復,但是恢復後,stash內容並不刪除,你需要用git stash drop來刪除;另一種方式是用git stash pop,恢復的同時把stash內容也刪除了
git remote //查看遠端程式庫的資訊
# git remote -v //顯示更詳細的資訊
git push origin master //推送分支,就是把該分支上的所有本地提交推送到遠端函式庫,推送時,要指定本地分支
本地新建的分支如果不推送到遠程,對其他人就是不可見的
從本地推送分支,使用git push origin branch-name
git checkout -b dev origin /dev //建立遠端origin的dev分支到本地,預設分支master
#git push //發生衝突的時候,先git pull拉取程式碼
git pull //如果失敗的話,提示“no tracking information”,原因可能是沒有指定本地dev分支與遠端origin/dev分支的連結
git branch --set-upstream-to=origin/dev dev //設定dev和origin/dev的連結
合併有衝突,需要手動解決,解決的方法如前面所說,git status,然後手動修復,再git add 和git commit ,最後git push
git tag v1.0 //commit號太長不好記,可以在分支上打標籤
git tag v0.9 6224937 //在分支上為指定的commit號碼打上標籤
#的標籤不是按時間順序列出,而是按字母排序的。可以用git show
例如 git show v0.9
git tag -a v0.1 -m "version 0.1 released" 3628164 //建立有說明的標籤,用-a指定標籤名,-m指定說明文字
git tag -d v0.1 //標籤打錯了,也可以刪除
建立的標籤都只儲存在本地,不會自動推送到遠端。如果要推送某個標籤到遠端,使用指令git push origin
例如: git push origin v1.0
或者,一次推送全部尚未推送到遠端的本地標籤
例如: git push origin --tags
如果標籤已經推送到遠端,要刪除遠端標籤就麻煩一點,先從本地刪除,git tag -d v0.9;然後,從遠端刪除。刪除指令也是push,但是格式如下git push origin :refs/tags/v0.9 或 git push origin --delete tag v0.9
以上是git操作常用指令的總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!