要點
①Git是目前世界上最先進的分布式版本控制系統(沒有之一)
版本控制
如果有一個軟件,不但能自動幫我記錄每次文件的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的文件了,也不需要把文件傳來傳去。如果想查看某次改動,只需要在軟件里瞄一眼就可以,豈不是很方便?
版本控制(Revision control)是一種軟體工程技巧,借以在開發的過集中式和分布式
CVS及SVN都是集中式的版本控制系統,CVS作為最早的開源而且免費的集中式版本控制系統,直到現在還有不少人在用。由于CVS自身設計的問題,會造成提交文件不完整,版本庫莫名其妙損壞的情況。同樣是開源而且免費的SVN修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制系統。
而Git是分布式版本控制系統,集中式和分布式版本控制系統有什么區別呢?
①集中式
版本庫是集中存放在中央服務器的,而干活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。
缺點:對網速要求高,不然提交文件太慢
②分布式
沒有中央服務器,每個人的電腦上都是一個完整的版本庫。
協作方式:各自的修改推送給對方,就可以互相看到對方的修改了。
為了交換修改方便,其實也會設立一個充當中央服務器的電腦。
沒有這臺也不要緊,只是不方便交換。
優點:不須聯網、強大的分支管理、遠程倉庫
①
git diff (psj.txt) #理解為近期修改未上傳吧,不理解成什么和什么比較
git diff --cached #是暫存區(stage)和分支(master)的比較
git diff HEAD -- psj.txt #查看工作區和版本庫里面最新版本的區別
②添加遠程庫 里面
fatal: Not a git repository (or any of the parent directories): .git
解決辦法:
git init(執行這個后要再cd learngit 然后git init)
③添加遠程庫 里面
$ git push -u origin master出現如下問題
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
解決辦法:
原因是目錄為空,其實是init的位置不對,重新cd learngit 然后git init即可
④bug分支章節 里面
(via——傲嬌同學可愛多)
概覽:master合并merge解決好的bug后,不要先把dev解印,先合并master,獲取里面的bug方案后,再解印。解印時會有提示沖突,需手動改一次文件。
1:在 dev 下正常開發中,說有1個bug要解決,首先我需要把dev分支封存stash
2:在master下新建一個issue-101分支,解決bug,成功后
3:在master下合并issue-101
4:在 dev 下合并master, 這樣才同步了里面的bug解決方案
5:解開dev封印stash pop,系統自動合并 & 提示有沖突,因為封存前dev寫了東西,此時去文件里手動改沖突
6:繼續開發dev,最后add,commit
7:在master下合并最后完成的dev
我覺得這種方法特別好:防止解決問題的時候修改了相同的文件,然后解印后的沖突可以手動修改。