這篇文章需要對git具有一定的了解,并且知道如何安裝git工具(其實就是上git官網下載個文件,安裝)
git這種版本控制工具有什么好處
第一個,方便可以多人協同開發同一個項目或系統
第二個,當你系統開發到一個穩定版本后為了開發新的功能,肯定要把開發好后的系統代碼進行備份保存起來,不然萬一那個不懂事的小程序猿刪的代碼你咋整呢
而代碼倉庫可以為你解決這個問題,而使用git倉庫的項目,就需要用到git工具
版本控制工具git或svn使用方式來說,一種命令行,一個是使用可視化工具進行操作。
git的可視化工具有很多,大部分原理都想通。(間接調用命令行進行操作。)
簡單的clonerepository克隆倉庫,openlocal repository打開本地倉庫,什么的就不說的
這里以SourceTree界面來舉例
一般我們從遠程倉庫上克隆代碼到本地倉庫后,我們的操作一般就是,
1、pull 拉取遠程倉庫上的代碼
2、修改本地代碼,
3、然后commit,commit時候選擇你要提交的你修改過的文件填寫提交的作者,日期,說明信息。這樣你本地倉庫代碼已經提交完成了,
4、將本地倉庫和遠程倉庫進行同步,使用push命令推送到遠程倉庫
上面的四個步驟是理想化狀態下的一般步驟,當單人使用的時候不會出錯,兩個人可能也不會有問題,但隨著人數增多,肯定會遇倒這樣那樣的問題。
問題情況1:如從遠端拉取到正式版本后,我增加的文件,或修改的代碼,然后在將修改或增加的代碼同步到遠端,但在我push之前,有另一個人也從遠端拉取得代碼
并且更新完成代碼,并push到遠程倉庫的。這個時候我commit沒有問題,但是我push不成功,還有一個就是我也正在修改代碼,然后不能將代碼pull下來
問題原因:很明顯,遠程倉庫已經被修改的,所以不能推送我們的更改
截圖看的更清晰:
我在不同文件夾下拉取的相同的遠程倉庫一個是在D:/Source_code/MergeRepo 另一個在D:/Source_code/New/MergeRepo
我先將其中一個倉庫增加一個文件 “測試push文件時沖突問題.txt”
常規操作,commit push,完成
我們可以看到文件已經上傳到遠程分支上的
再接著看另一個本地倉庫,可以看到下圖,pull按鈕有一個提示,遠程倉庫已經更新的,但這個時候我們可能還在開發新的功能,
可能這個工具沒有顯示遠程有更新可以拉取,我們想要將寫好的功能提交到遠程倉庫
執行,commit ,push,然后就,,出現錯誤,遠程倉庫已經更新的,不能推送。
這需要先將遠程代碼pull下來,但是可能也拉取不成功
因為新功能會存在修改我們拉取下來的項目的文件,所以我們當前就不能將遠程更新的代碼拉取下來,會提示我們先stashsave我們修改過的代碼,
然后再pull更新遠程代碼,最后再將我們存放到棧里面的開發新功能代碼修改彈出棧,stashpop
解決辦法:所以我們要先把遠程倉庫的代碼拉取下來,但是會存在拉取不下來的問題。
我們需要將我們的更改存放到棧內存中,也就是使用stash save命令,然后在拉取服務器端更新過的代碼,然后在使用stashpop命令將我們之前的修改取出來合并到
本地代碼倉庫中去。
當然上面的stash pop彈出改變的內容時會有conflict問題出現,我們找到發生沖突的文件,講我們需要的文件內容保留下來就可以啦
(以后有截圖的時候再詳細講)
最后沖突解決完成的,我們再按照常規流程走,commit,push
情況2:需要在正式發布好的產品上添加新的功能,不可能在主分支上開發新功能,比如我們正式版本是在master分支上,
解決方法:我們就需要在復制一份本地倉庫中的master版本,取新的
名字,在這個新的名字分支上開發新的功能,然后我們將新的版本提交到我們遠程倉庫分支上上。
提交完成后,我們將本地倉庫切換到master分支,在選中我們開發的新功能分支,右鍵點擊merge合并選中的分支到當前分支中。
到這里,新功能開發任務就完成啦,合并到master分支,主分支也擁有這個新開發的功能模塊的
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/gne-hwz/p/9086098.html