git操作常用命令的匯總

來源:互聯網
上載者:User
常用命令匯總

一、 回退到某一個節點,通過如下命令:

Git reset –hard HASH 返回到某一個節點,不保留修改 如:

Git reset –hard HASH 返回到某一節點,保留修改。

二、 本地所有的修改。沒有提交的,都返回到原來的狀態。

Git checkout .

Git checkout 版本庫 表示切換版本庫如:git checkout dev 切換到dev版本庫

Git checkout 檔案地址 表示取消該檔案的修改如:git checkout backend/controller/site

三、 查看提交日誌

Git log

四、 查看分支

Git branch 不帶參數:列出本地分支,當前所在的分支前面會有一個*號

五、 處理LF問題

問題出現的原因是window和Linux空格和換行轉化的不一致導致的,處理辦法如下:

配置全域變數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 <tagname>查看標籤資訊

例如 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 <tagname>

例如: 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.