克隆專案:
git clone https://github.com/shoukailiang/test.git
設定
如果你不設定可能還push不上去,第一個要配置的是你個人的使用者名稱稱和電子郵件地址。這兩條配置很重要,每次 Git 提交時都會引用這兩條資訊,說明是誰提交了更新,所以會隨更新內容一起被永久納入歷史記錄:
- git config --global user.name "shoukailiang"
- git config --global user.email "shoukailiang@qq.com"
git status 檢視狀態
-
[master ≡ +2 ~0 -0!](紅色代表是工作區):工作區有兩個新增的檔案,0個修改,0個刪除
-
[master ≡ +1 ~0 -0(綠色) | +1 ~0 -0 !(紅色)]:綠色表示暫存區 !表示有衝突
-
git add 新增到暫存區
-
git commit 提交到版本庫,會彈出一個檔案填註釋
-
git add .把修改過得檔案全部提交到暫存區(後面是.)
-
git commit -m "change demo01":註釋寫在引號裡面,不會彈出記事本
-
git commit -a -m "drag.js":先新增到暫存區後新增到版本庫的簡寫,引號裡面寫註釋
-
git log:檢視提交的歷史,歷史多了之後要按回車來顯示,退出按q
-
git diff :工作區和暫存區的檔案的差異的對比
-
git diff --cached:暫存區與版本庫之間的對比(或者git diff --staged)
-
git diff master:工作區與版本庫之間的差異 ,master那個是分支的名字
撤銷
- git reset HEAD drag.js 從暫存區撤銷回工作區
- git checkout -- drag.js 從版本庫撤銷回工作區(會先從暫存區撤銷,如果沒有才會到版本庫中撤銷)
- git commit -m "change3 drag.js and demo01.html" --amend :比如有兩個檔案1,2 我把1 add到暫存區,然後commit了全部, 這時候就除了錯誤,可以使用上述程式碼:就達到了撤銷上一次的commit 然後把檔案全部commit ;使用git log 並不會有那次commit的註釋資訊
刪除:
- git rm test.txt :把暫存區中的test.txt刪除(要先把工作區中的這個檔案刪除,否側會報錯)
- git rm -f test.txt 會把暫存區和工作區的test.txt刪掉(要先把test.txt add 到暫存區)
- git rm --cached test.txt 把暫存區的test.txt刪掉,不會吧工作區的test.txt刪掉
恢復:
-
指定檔案:比如一不小心在工作區把一個檔案給誤刪了,這時候git log 後找到commit 的id 然後 git checkout e154cb8c45eb drag.js
-
git reset --hard e154cb8c45eb 恢復版本,不管有多少檔案,可以去過去也可以去未來(未來至回退之後的未來)
-
git reset --hard HEAD^ 回到上一個版本
-
git reset --hard HEAD~2 回退兩個版本(跳過兩個,回退到第三個)
-
git reflog:把歷史版本全都列印出來
-
git remote 檢視遠端倉庫的名字
-
git remote -v 檢視名字所對應的遠端倉庫的地址
-
git push origin master (origin是遠端倉庫的名字 master是分支名)
解決衝突:
-
git fetch 拉取遠端倉庫程式碼但不進行合併,需要手動合併(在工作區內並不會直接合並還是原來的程式碼,可以先檢視區別後再合併)
- 檢視區別 git diff master origin/master
- 合併: git merge origin/master,合併會把兩個都合併,讓我們自己選擇(多餘的刪除)
-
git pull 拉取遠端倉庫程式碼直接合並
開源專案協作(沒許可權):
- fork:相當於一個映象放在自己的倉庫,克隆在本地,修改程式碼,(也可以在github上直接修改)釋出到自己的倉庫, 然後pull request ,寫一些留言,對方會看到,對方可以選擇 合併
分支:
-
git branch 檢視分支
-
git branch new1 建立new1的新分支
-
git checkout new1 切換到new1的分支
-
git checkout -b new2 建立new2分支並且切換到new2分支上
-
(先切換到master分支上), git merge new1 將new1與master合併
-
git branch --merged :可以知道當前分支下有被合併的分支 ,比如master分支下合併了new1
-
git branch --no-merged 當前分支下沒有被合併的分支
-
git branch -d new1
- new1和branch合併後,把new1刪除,只能刪掉被合併的分支,比如new2沒有和master合併就不能刪除new2
-
git branch -D new2 強制把沒有合併的分支刪掉
-
有衝突的合併(兩個分支不同)
- 在master上git merge new1 會讓你自己選擇留下哪個然後 git commit -a -m "....."
-
git push origin new1 把new1分支提交到遠端倉庫上
-
git tag 檢視標籤
-
git tag v1.0 v1.0版 之後:git push origin v1.0 (這裡v1.0不是分支)
-
git reset HEAD~ 撤銷回上一次提交的,和之前在暫存區裡提交前一樣的狀態