使用了一陣子git
,記錄一下收獲以及遇到的問題或者是解決辦法,如果文章中有什么錯誤,或者有什么疑問可以指出交流 :)
1 git基本流程
可能以下流程不是標準的git flow
,但是日常開發中用的最多的也是這幾個命令,有錯之處還望指正
第一步 從遠端克隆倉庫
git clone <倉庫地址>
第二步 從master
開一個新的分支
git checkout -b <分支名稱>
如果只是切換已經有的分支就不用加-b
了,比如,遠端有一個dev
分支,本地在從master
分支切換到dev
分支的時候就不需要加-b
參數了:
git checkout dev
第三步 提交修改的代碼
git commit -a -m "git message"
這里的參數-m
是可以填寫提交信息,后面的git message
就是填寫的提交信息,至于提交信息的填寫規范可以自行查看。
參數-a
是用來把已經被git
追蹤的修改或刪除的文件提交,如果只是修改或者刪除文件的話可以不使用git add
,但如果有新增的文件,在提交前需要把文件添加到 git
系統中:
git add .
.
表示所有的文件,也可以指定具體的文件名,但是我一直都是git add .
,圖方便嘻嘻
第四步 把分支合并
git checkout master //切換到master分支
git pull --rebase origin master //拉取遠端master代碼
git merge <分支名稱> //合并分支
在提交完自己分支修改的代碼之后,首先切換到需要合代碼的分支,比如master
分支,然后拉取遠端代碼,因為在協同工作的時候,可能別人已經把修改之后的代碼推到遠端,所以需要先把master
更新到最新,然后再把自己的分支合并即可。
拉代碼的時候不加--rebase
也沒有關系,只不過加了--rebase
以后git
的提交樹會比較清爽,感興趣的可以搜變基合并
第五步 把修改提交到遠端
上一步已經把修改合并到了master
分支上,然后把本地的master
分支推到遠端:
git push origin master
第六步 刪除自己的分支
git branch -d <分支名稱>
在功能分支合并了以后,就可以把功能分支刪除了。
如果功能分支沒有合并的話,-d
是無法刪除該分支的,但如果非要刪,可以用-D
參數強制刪除該分支:
git branch -D <分支名稱>
不加參數的話就是查看本地所有分支:
git branch
如果本地的分支已經刪除,還想刪除遠端的分支的話,可以用:
git push origin :<分支名稱>
因為本地分支已經刪除了,所以要在分支名稱前加上:
,不然push
的時候會報錯說分支不存在
2 解決問題
2.1 暫存
在日常開發中,可能在寫一個需求的時候,讓你改一個緊急的bug,而且是在同一個項目里,這時候就要使用git
的儲存了
git stash //把修改的內容儲存起來
git stash list //查看儲存的堆棧
git stash pop //把最近的儲存取出到工作區并且刪除堆棧中的這次儲存
git stash apply //應用最近的儲存
git stash drop //刪除最近的儲存
git stash clear //清空儲存堆棧
這些儲存操作默認都是最近的一次儲存,當然,pop
,apply
,drop
操作可以指定第幾次儲存,命令最后需要加stash@{$num}
,比如默認的就是stash@{0}
,但是省略掉了。
需要注意的是,能夠儲存的文件必須得是被git
追蹤的文件,如果一個新增的文件沒有add
過是不能被儲存的。
還有一點儲存的用處就是我之前丟棄修改的時候是先git stash
,然后直接git statsh clear
把儲存刪除,相當于丟棄了我的修改。
2.2 回退
回退的問題可以有很多花里胡哨的情況發生,還好我日常中遇到需要回退的情況比較少。
2.2.1 丟棄工作區的內容
工作區的內容,就是還沒有執行git add
的修改,可以用git checkout
來丟棄修改
git checkout -- *
2.2.2 丟棄暫存區的內容
暫存區的內容,就是在執行了git add
以后,但是還沒有git commit
,就需要使用git reset
git reset HEAD *
這樣可以把暫存區的內容回退到git add
以前,然后可以使用git checkout
來丟棄修改
2.2.3 回退提交
在提交了以后想要回退,然后要保留修改的代碼
git reset --soft HEAD^
這是回退到上一個提交節點,每多退一次提交就加一個^
,當然也可以用HEAD~3
,這個3
就表示要回退。
如果要回退并且直接丟棄所有修改,只需要把參數--soft
改為--hard
即可
git reset --hard HEAD^
3 寫在最后
以上差不多就是我在工作之中使用git
的一些收獲,可能會有錯誤,如果發現有什么不對的地方還望指正