git版本控制命令行說明

git版本控制操作

1.1 打開git命令行

  此操作均是在Windows下進行,有關軟件安裝,請移步此處※※

  首先鼠標在桌面空白地方右鍵選擇Git Bash here,然後cd到所要進行版本控制的文件夾。另外一種方法比較簡單,直接選中目標文件夾,右鍵文件夾,選擇Git Bash here,出現git的命令行界面。如下圖:
cmd
這裏已經在桌面創建了一個名爲git_test的文件夾,文件路徑建議全部使用英文,不要出現中文,避免出現不必要的bug。

1.2 新建本地版本庫

  在命令行界面輸入以下命令

git init

創建成功後出現以下界面
init
打開文件夾,會發現git_test目錄下回多出來一個.git的文件夾(默認是隱藏狀態,需要設置纔可見,但在bash中輸入ls -ah命令也可見到),這個文件夾就是Git用來進行管理版本庫。千萬不要隨意修改!!!
  接着在git_test文件夾下建立了一個新的文件cmd_test.txt因爲是在Windows下測試,所以此處需要注意不要用自帶的記事本編輯文本。因爲Windows的記事本會在每個文件的開頭添加0xefbbbf(十六進制)的字符,這樣會出現很多意外的問題。所以這裏是用Notepad++代替記事本打開的,當然也可以在bash中用命令:vim cmd_test.txt打開。
現在開始提交版本:
第一步:輸入命令git add cmd_test.txt,把文件添加到倉庫,或者使用git add .添加所有文件

git add cmd_test.txt

添加所有文件

git add .

有時候會用到只添加某一類型的文件,如只添加所有的txt格式的文件,類似Linux命令中的操作,命令如下:

git add *.txt

執行上面的命令後,沒有任何顯示,即表示添加成功

第二步:輸入命令git commit -m "描述此次提交的說明"將文件提交到倉庫。這裏的-m表示此次提交的說明

git commit -m "首次創建倉庫"

commit
執行結果如上圖:注意這裏方括號中的字符:e358c12,這個字符串很重要,後面再提會用到 1 file changed 表示一個文件被改動;2 insertion表示插入了兩行內容,此處示例寫的是:

git init; 
創建版本庫

至此版本倉庫的創建和提交操作就結束了。以後每次提交都需要按照此步驟執行,先添加(add操作)文件,再提交(commit操作)到倉庫。

1.3 版本管理

1.3.1 查看提交日誌

  使用命令git log可查看當前分支的歷史提交記錄列表

git log

  使用命令git log --follow file可查看當前分支的歷史提交記錄,例如這裏查看文件cmd_test.txt的歷史提交信息列表

git log --follow cmd_test.txt

1.3.2 版本跳轉

  有時候在修改程序後,程序的的內容發生了很大的變化,但修改用來可以運行的程序又十分複雜。這時版本回退如時光穿梭機一樣,可以跳轉到任何已經提交的的版本。其命令如下:

git reset --hard [commit]

這裏的commit可以是分支名稱,也可以是剛纔提到的那個字符串,一般填字符串,因爲每次提交都會產生不同的字符串。如下圖所示,修改文件,添加了兩次提交:
add 2 commit
此時用git log查看提交的信息如下:
2 log
這裏可以看到,總共提交了三次,每次的commit id是不一樣,這就方便跳轉到任何版本。比如這時跳轉到添加一次提交:

git reset --hard 08228

輸入id的前面幾位即可,Git會自動找到id,執行結果如下圖:
1th commit
這裏HEAD可以理解爲一個指向當前版本的指針,而id則是地址,每次跳轉則是HEAD指向不同的地址位置。這個方法就適用於當我們代碼改錯了,或者內容發生很大變化,此時想復原以前的程序時,使用此方法就可輕鬆的實現復原,當然前提要有提交

  如果在退回到第一次提交後,喫個飯回來,發現第二次提交的程序可能只是某個地方的小問題,回去改一下就行,這時怎麼辦?還是利用Git強大的時空穿梭功能。從當前的第一次提交狀態,跳轉到第二次提交的狀態。此時按照上述步驟先用git log查看提交的信息,執行結果如下:
rst log
發現和上次的日誌信息不一樣,這裏沒有第二次提交的日誌信息,這時找不到id,沒辦法跳轉。此時可使用git reflog命令查看提交記錄

git reflog

執行結果如下:
reflog
這裏可以查看每次操作後的情況,也找到第二次提交的id 236ecab,再次利用reset操作再回到第二次提交的狀態:

git reset --hard 236ecab

執行結果如下,此時已經回到了第二次提交的狀態:
2th

1.4 分支管理

1.4.1 創建、查看分支

  在Git中,master爲主分支,當我們每次提交到master後,master分支的線也越來越長。當多人合作開發一個程序時,若都在master裏面開發,這個分支會越來越長,而且隨着提交次數的增多,版本越來越多,可能會出現找不到哪個是自己提交的版本。對此通過Git的分支功能,再給每個人分配一個分支,每個人在所分配的分支完成其功能後,最後合併到主分支,這樣就不會相互影響,從而提高開發效率。

使用命令git branch branchname來創建分支branchname,示例如下,這裏創建名爲branch1的分支:

git branch branch1

使用git branch來查看分支

git branch

使用git branch -d branchname來刪除分支branchname

git branch -d branch2

執行結果如下:
branch
這裏首先創建了branch1branch2,接着使用git branch -d branch2刪除了branch2,然後查看當前分支列表,可見分支branch2已經被刪除。

1.4.2 切換分支和分支操作

  注意上圖中藍色的字符:(master),括號中的字符串表示當前工作的分支,當前是master分支。切換到branch1分支命令如下:

git checkout branch1

切換到branch1分支後,在此分支的操作和在master中的操作均一樣。爲了方便後續演示,我在文件夾下添加了cmd_test1.txt這個文件。然後執行添加文件,提交版本。提交成功後branch1分支有兩個文件
  接下來我們切換到master分支,然後用命令ls查看文件,會發現此時master分支中不包含剛纔添加的cmd_test1.txt這個文件,這也說明了在其它分支中修改、添加文件,不會改變主分支的狀態。執行結果如下:
checkout
從圖中可發現,切換分支後藍色的字符都在變化,即顯示當前工作的分支。

  若在分支中完成功能後想合併到另外一個分支,如將branch1合併到master主分支。首先切換到目標分支(master),然後輸入命令:git merge branchnamebranchname爲被合併的分支名稱,示例如下:

git checkout master
git merge branch1

執行結果如下圖,可以看到,此時master分支下已經包含cmd_test1.txt文件
merge
此時再使用git log查看日誌信息如下圖,日誌信息已更新,顯示合併的分支中提交的內容:
merge log

TortoiseGit操作以及命令行其他操作後續補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章