版本控制是指對軟體開發過程中各種程式**、配置檔案及說明文件等檔案變更的管理,是軟體配置管理的核心思想之一。
版本控制最主要的功能就是追蹤檔案的變更。它將什麼時候、什麼人更改了檔案的什麼內容等資訊忠實地了記錄下來。每一次檔案的改變,檔案的版本號都將增加。除了記錄版本變更外,版本控制的另乙個重要功能是並行開發。軟體開發往往是多人協同作業,版本控制可以有效地解決版本的同步以及不同開發者之間的開發通訊問題,提高協同開發的效率。並行開發中最常見的不同版本軟體的錯誤(bug)修正問題也可以通過版本控制中分支與合併的方法有效地解決。
**cvs:**是乙個c/s結構的版本控制軟體,主要用於開源的軟體管理,是多個開發人員通過乙個版本控制中心系統來記錄檔案版本,從而達到保證檔案同步的目的,是一種很老的集中式版本控制工具。由於之前cvs編碼的問題,現在大多數軟體開發公司都使用svn代替了cvs。
**svn:**是乙個開放源**的版本控制系統,通過採用分支管理系統的高效管理,簡而言之就是用於多個人共同開發同乙個專案,實現共享資源,實現最終集中式的管理。
集中式版本管理工具:
缺點:**集中於svn伺服器上,一旦發生問題,很難挽回
優點:**集中於svn伺服器上,不會發生個別新手汙染**的情況
**git:**是乙個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的專案版本管理。
git init
配置區域性身份:
git config user.name 名稱 ——》 設定提交名
git config user.email [email protected] ——》設定提交郵箱
cat .git/config——》檢視區域性提交身份
配置全域性身份:
git config --global user.name 名稱 ——》設定全域性提交名
git config --global user.email [email protected] ——》設定全域性提交郵箱
git ~/.gitconfig——》檢視全域性提交身份
git status
git add 1.txt 【git add . 提交所有檔案】
git commit -m '描述內容'
git diff
git diff head
git log --pretty =oneline
git reset --hard
commit id是乙個shall算出來的串,不像是svn的1,2,3,因為git 是分布式的。每乙個commit都是存檔,如果要回滾的話,只能從 commit來回滾 ,最上面的是最新的修改對於已經回滾的 commit ,如果關機了,可以通過git reflog
來找commitid ,檢視命令log。
git branch 分支名稱
git branch -v
git checkout 分支名稱
git merge 分支名稱
以將online合併到master上為例。檔名(1.txt)
1,進行合併
git merge online
2,進入衝突檔案,進行手動的**調整
vim 1.txt——調整**
3,進行add將衝突檔案新增到緩衝區
git add 1.txt
4,進行commit提交,注意不要指定具體提交的檔名稱
git commit -m 「描述」
衝突解決完成
cat 1.txt 檢視檔案
cat>>1.txt 編輯檔案,使用ctrl + z退出編輯模式
或者:vim 1.txt 進入編輯器,按i進行編輯,esc後wq儲存並退出,q退出,q!強制退出
git push -u origin master
git clone 《遠端位址》
git log --graph
git branch -d 《分支名稱》
git stash list
git把stash內容存在某個地方了,但是需要恢復一下,有兩個辦法:
另一種方式是用git stash pop,恢復的同時把stash內容也刪了
轉殖專案
git clone 專案ip
建立新的分支,用來同步新的資料
git branch 《分支名稱》
給更新的遠端庫起別名[此步可選擇不寫,僅僅是為了之後同步方便(不用再複製**)]
git remote add 《別名》 《遠端位址》
切換分支,來同步資料庫
git checkout 分支名稱
pull 遠端庫的專案
git pull 遠端庫位址 // git pull 別名
切換到master
git checkout master
合併分支
git merge 分支名
更改合併產生的衝突【沒有衝突,忽略此步】
vim 衝突檔案
確認master分支下的為最新版本
git add .
新增此次修改的描述
git commit -m 『描述內容』
更新到遠端庫
git push origin master
首先,可以試圖用git push origin 推送自己的修改;
git push origin master
如果推送失敗,則因為遠端分支比你的本地更新,需要先用git pull試圖合併;
git checkout 分支名稱
git pull 遠端庫位址 // git pull 別名
git checkout master
git merge 分支名
如果合併有衝突,則解決衝突,並在本地提交;
vim 衝突檔案
沒有衝突或者解決掉衝突後,再用git push origin 推送就能成功!
git push origin master
如果git pull提示no tracking information,則說明本地分支和遠端分支的鏈結關係沒有建立,用命令
git branch --set-upstream-to
origin/
。
git分支十分強大,在團隊開發中應該充分應用。
合併分支時,加上–no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。
Git多人協作
1 檢視遠端庫資訊 git remote git remote v 2 推送分支 將本地的資訊push到伺服器上 git push origin master 注意 1 master分支是主要的分支,需要時時刻刻同步 2 dev分支是開發分支,所有團隊成員在上面工作,需要同步 3 bug分支只用於本...
git 多人協作
檢視遠端庫資訊,使用git remote v 本地新建的分支如果不推送到遠端,對其他人就是不可見的 從本地推送分支,使用git push origin branch name,如果推送失敗,先用git pull抓取遠端的新提交 在本地建立和遠端分支對應的分支,使用git checkout b bra...
git 多人協作
1 首先在遠端git倉庫中建立除master分支之外的分支,如dev分支,用於開發除錯 2 抓取分支 你的小夥伴要在dev分支上開發,就必須建立遠端origin的dev分支到本地,於是他用這個命令建立本地dev分支 git checkout b dev origin dev然後 git pull o...