git clone
將遠程倉庫中的項目下載到本地倉庫
用法: 進入到git工作目錄,輸入git clone https://github.com/rodickmini/taptempo.git 進行克隆
將遠程倉庫中的項目下載到本地倉庫
git checkout
切換分支或將修改的文件恢復
用法:
clone
下代碼後,代碼默認會在master
分支,我們需要把代碼切換到一個自己的分支,這樣的話,我們隨便怎樣修改,怎樣提交,都不會影響到master
或其它分支。
git checkout -b feature-test
這個時候,feature-test
分支和master
分支的代碼是完全一樣的,但是此後,你做的所有修改都不會影響master
分支,只會在feature-test
分支上往下進行。
git status
顯示當前工作目錄的文件狀態
用法
git status
- 結果中,
- Changes to be committed列出了已經add了還沒有commit的文件
- Changes not staged for commit列出了修改了,但還沒有add的文件
- Untracked files列出了新加入的,還沒有被git管理起來的文件
git add
作用
將一個普通文件交給git管理或者將修改過的文件添加到git的索引庫中。當我們使用
git commit
時,git將依據索引庫中的內容來進行文件的提交。
用法
git add index.html
如果我們一次修改比較多的文件,需要把所有修改的文件都添加到索引庫,可以使用:
git add --all
如果我們誤把一個文件添加進了索引庫,可以使用以下命令將其“拉回”暫存區:
git reset HEAD index.html
如果我們想把一個文件恢復成修改前的狀態,可以使用以下命令,就撤銷了我們所有的修改:
git checkout index.html
但是,執行這個命令要慎重哦!一旦執行,你的所有修改都找不回來啦!
在執行之前,看一下這次修改了那些東西,那麼就需要使用git diff命令:
git diff index.html
git diff
命令會調出一個類似於vi的文本編輯器(只讀),裏面紅色的部分說明你刪除了<h1>catch
the beat</h1>
這一行,綠色的部分說明你添加了display:
block;
這一行。看完了,按q
鍵就可以退出啦~git commit
作用
將所有添加到索引庫的文件提交到本地倉庫
最簡單的commit操作如下:
git commit -m "upd"
所以commit message
主要要說3件事:
- 是upd(更新)、add(添加)還是del(刪除)操作
- 操作了什麼文件(或者什麼內容)
- 爲什麼要做這個操作(或者能夠解決什麼bug,解決什麼問題)
git push
作用
將本地倉庫的修改推送到遠程倉庫
用法
git push origin feature-test
如果不push,協作的小夥伴們將永遠不知道你關起門來做了什麼傷天害理的事兒,所以,當我們做完功能後,要記得使用git push
將自己的改動推送到遠程代碼倉庫。
如果遠程倉庫當前沒有feature-test
這個分支,將會新建分支。
git fetch
作用
將遠程代碼倉庫的代碼下載到本地
用法
本地倉庫維護着一堆“remote-tracking branches”,翻譯過來叫“遠程跟蹤分支”,對應着本地倉庫裏remote/master
remote/develop
這些分支。
fetch操作後,遠程跟蹤分支就和遠程代碼倉庫裏的相應分支代碼保持一致了~
git fetch
fetch
操作默認只會fetchorigin
倉庫的分支,如果要fetch其它倉庫的分支,需要在後面加上倉庫名:
git fetch repo-caiyou
通常,我們的feature分支在完成使命後會被管理員刪除掉,而我們各自的本地卻不知道,硬盤空間吃緊。所以,如果我們想在管理員刪除了遠端的某些分支的時候,將自己本地對應的“遠程跟蹤分支”刪除掉,需要在fetch操作時加一個-p
參數:
git fetch -p
git merge
作用
將一個或多個分支合併
用法
比如我們當前在develop
分支上,git
fetch
之後,我們把遠程代碼倉庫中的develop
分支下載到了本地倉庫,但是並沒有merge
到我們當前工作的develop
分支裏,看log
的話,我們會發現我們本地的develop
分支和remote/develop
分支還差了老遠~因此需要進行如下操作:
git merge origin/develop
這樣,develop
分支就和remote/develop
分支一樣了。
git merge
操作通常還用在別的一些場景中,比如,我們的同事在feature-x
分支上做好了某個業務,此時,需要將feature-x
分支合併到develop
分支,便於在測試環境上線,就需要先切換到develop
分支:
git checkout develop
再將feature-x
分支merge到develop
分支:
git merge feature-x
當然,如果是比較大的變更,或是涉及到比較重要的文件時,這類業務上的merge操作建議在github上使用pull-request
,或是gitlab系統裏的merge-request
,貿然merge產生大量衝突會很蛋疼的哦~
git pull
作用
將遠程代碼倉庫裏的代碼下載下來並自動合併到當前工作的分支
用法
git pull
不負責任地講,git pull
基本上等於git
fetch
+ git merge FETCH_HEAD
,但是,git
pull
操作無法看清中間的代碼差異和合並的邏輯(其實是我不太清楚啊。。。),曾經踩過坑,代碼合併出問題,所以我個人不會直接使用git pull
這個操作,畢竟,耿直boy們更喜歡手動擋嘛~
git log
作用
查看代碼提交日誌
用法
git log
會顯示最基本的log信息,但是不直觀,不能看清分支之間的分叉、合併、前因後果,所以個人習慣加上--all
`--decorate--graph
這3個參數:
git log --all --decorate --graph