git下載
到官方網站下載,如果下載速度太慢,可以F12找到a標籤的href複製到迅雷進行下載,其他外國軟件均可參考這個步驟。
##初始化git 我們默認安裝的是linux命令的bash,所以適用所有linux命令。在初始化git時,我們首先選擇本地倉庫的文件夾,右鍵git bash進入bash頁面,執行 git init 命令:
執行完成後我們的GitTest文件夾中還是空的,我們執行 ls -lA 可以看到:
在linux中以“.”開頭的文件表示隱藏文件。我們看一下.git/裏面有什麼:
.git目錄中放的是本地倉庫相關子目錄和文件,不能刪除和修改。
##設置簽名 簽名的形式:
用戶名:malaganguo
密碼:[email protected]
簽名的作用:區分不同開發人員的身份,且郵箱不做驗證。
辨析:這裏設置的簽名和代碼託管中心的賬號密碼沒有任何關係。
設置簽名的命令:(優先級採用就近原則)
git config --global user.name admin
git config --global user.email [email protected]
##基本操作 指令:git status
如果裏面沒有文件會提示:
malaganguo@malaganguo MINGW64 /e/workspace/GitTest (master)
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
###有文件的話會有兩種顏色的顯示:
紅色表示未添加到暫存區,需要使用git add 文件全名
指令;
綠色表示已經添加進緩存區,但是沒有提交或者已經做了修改,處於此狀態的文件需要執行git commit 文件全名
才能提交。(使用git命令提交併添加註釋git commit -m "註釋內容" 文件全名
)
在執行完git commit
命令提交到本地庫後會顯示提交的信息,master表示當前位置,root-commit表示第一次提交first commit.new file gitnote.md hello.txt是提交時vim首行添加的註釋(很顯然註釋寫錯了),1 file changed,1 insertion(+):一個文件變化,新添加一行。
####總結:git操作步驟 ①git status 指令查看當前項目倉庫的文件的狀態
②對於需要git管理的使用 git add 文件全名 添加到git的,此時文件同時存放在git的緩存區中還未提交。
③對於需要提交到git中的文件,我們使用git commit 文件全名來提交文件到git中
##怎樣實現版本的前進/後退(版本穿梭)
首先查看git日誌,找到需要穿梭的節點
git log 查看日誌
git log --pretty=online 簡潔查看日誌
git log --online 縮短簡潔顯示的hash值
git reflog 可以看到移動到當前版本需要多少步
HEAD是git管理的指針名字,方便我們引用以實現版本前進/回退,版本管理實質上是對指針的操作
###基於索引值(hash)版本穿梭
###使用“^”或“~”回退
git reset --hard HEAD^^^
後退三個版本,後退幾個版本就有幾個“^”。 問題是如果後退的太多,就比較難表達了,我們使用“~數字來後退”,git reset --hard HEAD~3
同樣爲後退三個版本。
reset明令除了hard參數外還有soft、mixed參數,soft參數僅僅再本地庫移動指針,不懂暫存區和工作區;mixed在本地庫重置HEAD指針,重置暫存區;hard是三個都改變了
###刪除文件並找回
前提:刪除前,文件存放時的狀態提交到了本地庫
操作:git reset --hard[指針位置]
###比較文件差異
git diff 文件全名
將工作區和暫存區進行比較 git diff 本地庫歷史版本 文件全名
工作區和歷史版本比較
不加文件全名可以進行所有比較
##分支開發
提高迭代效率,模塊化開發,開發完成後合併主幹。某一個分支開發失敗不會影響其他分支,方便於SVN的分支。
###分支合併
①切換到被合併分支中git checkout 被合併分支名
②用git merge 待合併分支名
####合併產生衝突
兩個分支對同一文件的同一位置做了不同的修改,現在合併時就會產生合併衝突。
衝突的解決辦法:
- 等號前的是當前分支,後面的是合併分支,把不要的版本刪除就行了。
- add
- 解決完衝突後,文件變成了modified狀態,需要commit,不能帶文件名,這樣纔算解決了衝突。
##Hash
hash是一種加密方式。明文轉變爲祕文。不侷限於文本。
##遠程github
登錄github -> new repository ->複製https的url
###給url起別名 git remote add origin https://github.com/malaganguo/test225.git
origin就是https://github.com/malaganguo/test225.git的別名
git remote -v
查看託管倉庫
###從本地倉庫推送到github倉庫 git push origin master
把master分支推送到origin中
###從網絡倉庫clone項目
可以看到,在執行完clone指令後已經再本地複製了一份git項目
#Q&A git 無法添加文件夾下文件
google後發現可能是該子文件夾下有.git文件夾導致無法上傳。
刪除子文件夾下.git後,依然無法提交子文件夾下的文件。
繼續google,
嘗試以下方法:
git rm --cached directory
git add directory
注:directory爲子文件夾的路徑。
但是執行git rm --cached directory時,提示
fatal: Unable to create 'xx/.git/index.lock': File exists.
執行rm -f xx/.git/index.lock後解決