有一個項目a,已經完成了基本的功能,測試下來是穩定的,接下來想增長新的功能,並用對其完善,但這個過程當中可能會出現bug,甚至影響到全局php
這個時候,咱們就但願保存一個穩定版本的文件,另外複製一份文件進行改進,這樣即使遇到問題也能夠回到穩定的狀態,並能夠進行對比來進行dbug
在學習版本控制工具前,方法是複製文件夾,而後在新的文件夾中進行修改,可是明顯這樣會形成多餘的文件夾,管理極爲混亂linux
因此就須要咱們的版本分支管理工具git登場了git
從官網下載對應的exe進行安裝便可github
只要這邊改爲第一個,保證安全性,其餘就一路next就能夠了windows
$ git config --global user.name "name" //填名字 $ git config --global user.email 123@163.com //郵箱
在項目文件夾中右鍵菜單,Git Bash here
或者在其餘地方Git Bash here以後,命令行裏輸入cd 路徑名轉到項目文件夾中安全
$ git init //初始化倉庫
下一步就要把文件所有提交到倉庫的暫存區工具
$ git add . //能夠把.改爲要提交的文件名來單獨提交
不過在這以前,先要肯定哪些文件不要提交
經過IDE(不能直接在文件夾右鍵新建)(我用的vscode,在命令行輸入$ Code .gitignore)新建一個.gitignore文件,在裏面寫要忽略的文件學習
//忽略規則 • bin/: 忽略當前路徑下的bin文件夾,該文件夾下的全部內容都會被忽略,不忽略 bin 文件 • /bin: 忽略根目錄下的bin文件 • /*.c: 忽略 cat.c,不忽略 build/cat.c • debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj • **/foo: 忽略/foo, a/foo, a/b/foo等 • a/**/b: 忽略a/b, a/x/b, a/x/y/b等 • !/bin/run.sh: 不忽略 bin 目錄下的 run.sh 文件 • *.log: 忽略全部 .log 文件 • config.php: 忽略當前路徑的 config.php 文件
而後要把暫存區的文件裏提交到正式的倉庫裏測試
$ git commit -m '這裏能夠加提交的註釋'
若是.gitignore文件沒有在提交前創建,或者不當心提交了不想要提交的文件,那能夠經過下面的命令行進行取消ui
$ git reset 文件名 取消暫存區的文件 $ git rm -r --cached 文件名 移除正式倉庫裏的文件,加上--cached就不會把本地的文件刪除
提交以後,或者未提交時,均可以經過這句來查看倉庫目前的狀態
是否有未跟蹤的文件,或者暫存區裏有尚爲正式提交的文件,都會有所顯示
$ git status
若是工做目錄顯示是乾淨的,也就完成了咱們的初次提交
On branch master nothing to commit, working directory clean
在提交中,可能會遇到這樣的問題
warning: LF will be replaced by CRLF
windows中的換行符爲 CRLF, 而在linux下的換行符爲LF
因此在執行add . 時出現提示
解決方法:
$ git config --global core.autocrlf false //禁用自動轉換
$ git log $ git log -a //更詳細
在github的我的主頁中,新創建一個倉庫
複製倉庫頁面的url
在Git Bash中執行
$ git clone url
這樣就會在Git Bash所打開的地方,創建出一個新的文件夾,裏面會有網上倉庫的內容(若是在創建的時候有勾選Readme說明文件的話,就能夠看到它)
而後把穩定版裏的全部文件複製到這個新文件中
進行以前初次提交的操做
$ git add . $ git commit -m '' $ git commit -a -m '' //把上面兩句簡寫到一塊兒
而後進行倉庫的遠程提交
$ git push
輸入帳號密碼後,即把文件提交到了github上的倉庫中
回到咱們最初問題上來
在保存了穩定版本到倉庫後
咱們能夠建立一個分支
$ git branch fen //建立分支 $ git checkout fen //切換到新的這個分支上 $ git checkout -b fen //也能夠兩句合寫
而後就能夠對其中的文件進行修改
能夠隨時切換回主線,git會把文件都還原成穩定版的狀態
$ git checkout master
修改了文件內容以後
若是還沒有提交暫存,想查看對比倉庫裏的文件的修改之處 :
$ git diff
若是已經提交到暫存,想查看對比倉庫裏的文件的修改之處 :
$ git diff –staged
若是此時又對文件內容作了修改
再使用下面這句
$ git diff
顯示的就是文件和暫存區內文件的對比(不是倉庫了)
$ git status -s M //已經提交到暫存的修改文件 M //尚爲提交到暫存的修改文件 MM //已經提交到暫存,並在暫存後繼續修改的文件 A //新提交到暫存的文件 ?? //尚爲跟蹤的文件
查看分支狀況
$ git branch * fen master
在修改完這個分支以後,測試爲穩定,但願將其合併到主線上,進行版本更新
$ git checkout master //切換回主線 $ git merge fen //把支線合併過來 $ git merge -d fen //刪除此分支
至此,就完成了一次工做流程
目前用到的都只是我的的版本管理,沒有涉及多人協做
更具體的學習仍是要參照官方文檔
https://git-scm.com/book/zh/v...