git使用

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"


pwd //版本倉庫的位置
ls //當前目錄的所有文件 ls -ah可看到隱藏文件
mkdir //創建新目錄


$ git init       //把這個目錄變成Git可以管理的倉庫


//在倉庫內新建文件readme.txt
$ git add readme.txt //將文件添加到倉庫中
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files." //把文件提交到倉庫 -m後面輸入的是本次提交的說明


/**
如果不小心輸成了$ git commit 則 :wq 回車
**/


$ git status //命令可以讓我們時刻掌握倉庫當前的狀態
$ git diff readme.txt   //能看看具體修改了什麼內容


$ git log //命令可以告訴我們歷史記錄
$ git log --pretty=oneline //一條歷史記錄顯示在一行


$ git reset --hard HEAD^ //回退到上一個版本上一個版本就是HEAD^,上上一個版本就是


HEAD^^,版本過多HEAD~100


$ git reset --hard 3628164 //根據commit id指定回到未來的某個版本
$ git reflog //用來記錄你的每一次命令 含有commit id


工作區 版本庫 暫存區(Stage)
工作區:git init的那個目錄。
版本庫:目錄下.git文件夾。
暫存區:執行add命令後 未commit時文件的位置。 而commit命令就是把暫存區的文件提交


$ git checkout -- readme.txt //必須是commit後修改,或者add後修改 //修改包括刪除
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷,這裏有兩種情況:
一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀態。
總之,就是讓這個文件回到最近一次git commit或git add時的狀態。


$ rm test.txt //從文件夾刪除文件
第一種情況:確實要從版本庫中刪除該文件
$ git rm test.txt //從版本庫中刪除該文件
$ git commit -m "remove test.txt"


第二種情況:恢復該文件
$ git checkout -- test.txt


github的使用
1.創建SSH Key $ ssh-keygen -t rsa -C "[email protected]"
2.在github中添加SSH key 
3.在github中Create a new repo
4.把一個已有的本地倉庫與之關聯 $ git remote add origin [email protected]:michaelliao/learngit.git
注意:此時github中repo必須爲空,如果不爲空則會報錯failed to push some refs to git
此時可以 $ git pull --rebase origin master合併
5.把本地庫的所有內容推送到遠程庫上 $ git push -u origin master


由於遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master


分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令
$ git push origin master


$ git clone [email protected]:michaelliao/gitskills.git 上次我們講了先有本地庫,後有遠程庫的時候,如何關聯遠程


庫。現在,假設我們從零開發,那麼最好的方式是先創建遠程庫,然後,從遠程庫克隆。


$ git checkout -b dev //創建dev分支,然後切換到dev分支


git checkout命令加上-b參數表示創建並切換,相當於以下兩條命令
$ git branch dev
$ git checkout dev


$ git branch //查看當前分支
$ git merge dev //合併到master分支上
$ git branch -d dev //刪除dev分支
$ git branch -D dev //分支沒合併時強制刪除分支


解決衝突:有衝突的時候可以用status看到, 可以手動解決。
$ git log --graph --pretty=oneline --abbrev-commit 以圖形的方式展現


通常,合併分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。
如果要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支信息。
$ git merge --no-ff -m "merge with no-ff" dev




bug分支:軟件開發中,bug就像家常便飯一樣。有了bug就需要修復,在Git中,由於分支是如此的強大,所以,每個bug都可以


通過一個新的臨時分支來修復,修復後,合併分支,然後將臨時分支刪除。
當你接到一個修復一個代號101的bug的任務時,很自然地,你想創建一個分支issue-101來修復它,但是,等等,當前


正在dev上進行的工作還沒有提交。
Git還提供了一個stash功能,可以把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作:
$ git stash 加入的順序是從0開始往後移位,類似於棧
$ git stash list


$ git stash apply 恢復後,stash內容並不刪除
$ git stash drop 刪除
$ git stash pop 恢復的同時把stash內容也刪了


多人協作:
$ git remote 查看遠程庫的信息,遠程倉庫的默認名稱是origin
$ git remote -v 顯示更詳細的信息
$ git push origin master 推送分支
$ git push origin dev
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章