首頁  >  文章  >  後端開發  >  git操作常用指令的總結

git操作常用指令的總結

零下一度
零下一度原創
2017-07-17 15:11:171430瀏覽

常用指令彙總

一、                       回退到某一個節點,並以下列指令:

"$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,不可以直接commit

git 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 ec6980a

2)關閉了終端機窗口,重新打開,輸入git reflog ,查看操作的每一筆記錄,找回版本號回滾

 

git checkout -- file //撤銷工作區操作,有兩種情況,1、未加入快取區前,是撤銷本機工作區修改,2、已新增快取區後,是撤銷快取後的修改,還原快取的版本

git checkout -- file指令中的--很重要,沒有--,就變成了「切換到另一個分支」的命令

git checkout branch //切換branch, 同時重置快取區和工作區, 如果工作區有修改沒有提交, 需要先commit或stash

git 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn