Git 实用命令项目基操【合集】
文章目錄
- 1. 分支篇
- 2. 查看篇
- 3. 回退篇
- 4. 合并篇
- 5. 事故篇
1. 分支篇
# 查看本地分支列表 git branch # 查看遠程版本庫分支列表 git branch -r # 查看本地與遠程所有的分支列表 git branch -a# 從當前分支創建新的dev分支 git branch dev# 刪除dev分支 git branch -d dev # 刪除遠程dev分支 git push origin --delete dev# 重命名分支 git branch -m dev dev1# 從當前分支拉出新的分支dev git checkout -b dev # 從遠程分支拉取到本地 git checkout -b dev origin/dev # 根據tag拉出新的分支 git checkout -b branch_name tag_name # 把新建的分支push到遠端 git push origin dev# 切換到dev分支 git switch dev git checkout dev# 查看關聯遠程的分支信息及權限 git remote -v # 刪除關聯的遠程分支origin git remote remove origin # 添加遠程分支關聯 git remote add origin https://xxx.git# 將遠程分支覆蓋本地代碼 git fetch --all git reset --hard origin/master (這里master要修改為對應的分支名) git pull2. 查看篇
查看狀態與日志
# 查看當前工作區狀態 git status# 查看提交記錄 git log # 查看所有的log git reflog # 查看feature1分支是否push到遠程分支 git log feature1 ^origin/feature1查看差異
# 工作區 vs 暫存區 git diff # 暫存區 vs 本地版本庫(最近一次commit) git diff --cached # 工作區 vs 本地版本庫(最近一次commit) git diff HEAD # 工作區 vs 指定commit-id的差異 git diff commit-id # 暫存區 vs 指定commit-id的差異 git diff --cached commit-id # commit-id-1 vs commit-id-2 git diff commit-id-1 commit-id-23. 回退篇
git reset --hard commit_id# 放棄工作區修改(如果是所有文件把文件名改成 . 點就行) git checkout -- xxx.js # 放棄暫存區修改,回退到Unstaged狀態 git reset HEAD . # 回退提交 git reset HEAD@{index}參數
--mixed :為默認值,等同于git reset。 將文件回退到工作區,此時會保留工作區中的文件,但會丟棄暫存區中的文件;
--soft :將文件回退到暫存區,此時會保留工作區和暫存區中的文件;
--hard :將文件回退到修改前,此時會丟棄工作區和暫存區中的文件;
4. 合并篇
# 添加幾個文件到暫存區 git add xx.js yy.js # 添加所有文件到暫存區 git add . # 提交暫存區的修改到本地版本庫 git commit -m "本次修改的comment" # push到遠程倉庫分支 origin-關聯的倉庫名 master-分支名 git push origin master# 合并dev分支修改到當前分支 git merge dev -m "merge from dev" # 合并某一次提交到當前分支(產生一次提交,需要push) git cherry-pick fsa0dsads # 強制將遠程分支覆蓋本地分支 git fetch --all git reset --hard origin/master git pull# 非快速合并 會產生一條commit git merge dev --no-ff -m "merge dev"5. 事故篇
常在河邊走,哪有不濕鞋;人在江湖飄,哪有不挨刀!
事故1:剛提交了一次代碼,突然發現少了一個空格或多了一個分號,類似這些小問題又得重新提交一遍,如果按正常的提交又會產生一次提交記錄,這樣會多出很多的提交記錄,我們是拒絕的,那怎么做呢?
一般的小伙伴會想到先提交一次再用git rebase -i通過變基來合并提交,這也可以,但是我想大家隆重介紹比它快一萬倍的--amend,See:
git add . git commit --amend --no-edit上面的命令是在前一次提交后,發現有小問題然后就再提交一次,只需要加個參數--amend就會自動合并上一次的提交,--no-edit參數是不需要修改注釋,如果需要修改就不加這個參數就行了。
需要注意的是--amend不要濫用,如果一直用這個來合并,最終就只有一條提交記錄了,如果是別的功能修改就不要使用--amend讓它生成新的提交記錄。
事故2:新的開發任務還沒編寫完成,本地有部分代碼還不能提交,而需要馬上解決一個bug,此時該怎么做?
這里需要用到git stash命令,它的作用就是保存當前的工作區與暫存區的狀態,把當前的工作隱藏起來,等以后需要的時候再恢復,git stash 這個命令可以多次使用,每次使用都會新加一個stash@{num},num是編號
# 隱藏當前的工作區與暫存區,可以切換到別的分支繼續工作 git stash# 查看被隱藏的stash列表 git stash list# 恢復最新的stash到工作區(原來暫存區的需要重新進行add暫存) git stash pop# 刪除所有的stash git stash clear先保存當前工作區和暫存區的修改,此時的工作區會顯示上一次提交后的樣子,修改和暫存的文件被隱藏了 ,這時候就相當于working tree clean狀態,可以切換到別的分支去修改bug或緊急任務,等那邊的問題解決了,再回到這個分支來執行git stash pop恢復之前的工作到工作區,注意之前保存到暫存區的需要重新暫存。
注意:工作區有文件已修改沒有添加到暫存區或沒有提交,都不能切換到別的分支。
事故3:本來應該提交到新分支的東西,提交到了主分支!
# 從當前狀態的主分支新建一個分支 git branch new-master # 取消主分支的最新一次提交 git reset HEAD~ --hard # 切換到新分支 git checkout new-master注意:如果你已經推送到了遠程分支,那一切都晚了。如果你已經修改了別的文件,那第二行應該是git reset HEAD@{number},而不是HEAD~,以回到最初犯錯的時間和地點。
事故4:提交到了錯誤的分支上!
解決辦法1:git stash保留現場
# 取消最新的提交,保留工作區現場原狀 git reset HEAD~ --soft # 保存現場到stash git stash# 切換到正確的分支 git switch dev # 還原現場 git stash pop # 這里可能會有沖突,如果有就解決下沖突 # 然后再添加暫存,提交 git add . git commit -m "balabala..."解決辦法2:cherry-pick(摘櫻桃🍒) 喜歡🍒嗎?
# 假設應該提交到dev分支的代碼,提交到了master分支# 切換到正確的分支 git branch dev # 把錯誤的分支的最新提交🍒摘過來 git cherry-pick master # 回退錯誤分支的代碼 git switch master git reset HEAD~ --hard事故5:git pull 時提示因某些文件沖突不能合并
其實這個是常規操作,因為有很多小伙伴一起編輯,所以文件沖突是正常的,這時候有兩個情況:
1.你想保留你自己的本地修改
處理方案:
接下來解決文件沖突,再提交即可
2.你不想保留自己的修改
處理方案:
事故現場未完待續。。。
詳細Git教程,參考專欄:傳送門
總結
以上是生活随笔為你收集整理的Git 实用命令项目基操【合集】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 把所有圆圈连接起来的游戏_【实用教案】赶
- 下一篇: python字符串_python字符串格