Git使用
玩轉git請大家參考以下資料:http://zixueit.cn/ 搜索 玩轉git三劍客資料中有詳細講解
一、git創建版本庫
首次git創建版本庫非常的簡單使用命令
Mkdir filename(創建文件夾 名字可以自定義)
然后打開這個文件夾
Cd filename
執行命令
Pwd 命令pwd則可以顯示創建的文件夾的具體位置
然后使用git命令將創建的文件夾變為可以通過git管理的倉庫
Git init
創建好git倉庫后會在文件夾中新增文件.git的目錄這個.git是git用來跟蹤和管理版本庫的注意:不要手動的修改這個文件否則的話會使整個git倉庫癱瘓,有些時候.git是默認隱藏的這個時候使用命令
Ls -ah 則可以顯示.git文件
二、將文件上傳到git倉庫(三步走戰略)
1>使用命令 git add 文件名
2>使用命令 git commit -m 描述
Git commit 命令是通過命令告訴git 將文件上傳到倉庫這個時候上傳的倉庫是本地的也就是我們剛剛在本地創建的文件夾
-m 后面則是對本次操作的描述
三、查看文件的狀態
Git status 命令可以查看倉庫的當前狀態
查看文件的更改信息使用命令
Git diff filename
四、git版本回退
在我們的工作當中會有很多次修改,提交這時候就會存在文件錯亂的問題那么git很好的解決了這個問題的方式使用命令
Git log 顯示最近到最遠提交的日志一般顯示最近3次的提交日志
最近一次是append GPL 上一次是 add distributed 最遠一次 wrote a readme file
這樣的信息會顯得很雜亂這時候使用添加命令
--pretty=oneline 整體命令是git log --pretty=oneline
在git中用head表示當前版本上一個版本用head^表示
當我們需要回退很多版本的時候需要些很多個^這時候就很麻煩所以我們使用命令
HEAD~100這樣就可以回退100個版本
我們需要在當前版本回退到上一版本這時候就可以使用命令
Git reset --hard HEAD^
回退之后呢我們可以使用cat 文件名 這樣的話就可以查看版本信息
五、創建和合並分支
創建並且切換分支使用命令
Git checkout -b 分支名
查看當前分支使用命令
Git branch
這樣會顯示所有的分支但是在當前分支前面會有*標示
這樣我們以后的開發就可以在分支上進行這樣就能保證主分支master上面的項目不會受到影響,而我們自己進行開發的項目也能更好地進行代碼的合並,在分支上進行開發后我們需要進行代碼的整合這時候按照正常的提交進行即可
因為上面已經執行了創建並且切換分支那么我們在分支上直接進行提交試用命令
Git add
然后使用
Git commit -m ‘本次提交的說明’
然后會看到如下的效果
上面的截圖說明了本次提交的信息
在分支上進行提交之后我們主分支master上面並沒有本次代碼的任何更改所以這個時候我們應該進行切換到主分支 master使用命令
Git checkout master
切換分支之后那么我們應該進行的是分支的合並因為我們需要將剛剛在分支上面執行的代碼操作合並到主分支的上面所以使用命令
Git merge 分支名
Git merge 命令用於合並指定分支到當前分支
執行命令后會見到如下的效果
其中Fast-forward 表示的是快捷合並
合並之后如果該分支確定沒有用后可以直接刪掉使用命令
Git branch -d 分支名
當然合並分支並不是一帆風順的當然會存在沖突,那我們應該怎么辦呢,當然是解決沖突,有問題要解決問題,沒有問題創造問題也要解決問題下面是合並分支時候出現的問題
Git沖突后會告訴我們沖突的位置
標示出來的既是沖突的位置,觀察發現即使代碼重復的位置
在使用分支的時候如果使用Fast-forward這種強制合並的方式,會因為刪除分支而丟失合並的信息,這個時候我們使用的是另一種合並的分支的方式
在使用git的過程中可能會存在從遠程版本庫中進行pull的時候本地更改過的代碼會被覆蓋這個時候就比較蛋疼了所以
我們使用git stash將我們本地的修改的內容進行保存
這樣本地的所有修改就都被暫時存儲起來 。是用git stash list可以看到保存的信息:
git stash暫存修改
其中stash@{0}就是剛才保存的標記。
接下來我們就可以使用 git pull 使用 git pull 后就會更新遠程倉庫的代碼,但是這時候可能會存在本地代碼的覆蓋問題所以我們這時候就應該將剛剛保存的修改釋放出來所以使用命令
git stash pop stash@{0}
系統提示如下類似的信息:
Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c
意思就是系統自動合並修改的內容,但是其中有沖突,需要解決其中的沖突