git分支功能和git stash命令的使用

2021-08-16 14:48:00 字數 1828 閱讀 4430

【背景】在開發過程中,對git的使用經常只是簡單的分支**管理。分支功能並沒有解鎖多少,浪費了這麼強大的工具。

為了方便版本迭代對分支**的管理,採用每個版本乙個分支的**管理風格。dev-1.0.0 是版本1,dev-1.0.1是版本2,如此下去。保留master分支,在版本發布的時候都是採用master分支進行。 乙個版本結束後,需要建立新的版本,並且對當前版本進行許可權保護,避免其他人再上傳**。造成版本**不一致 。如果需要進行bug修改,那麼**要提交舊版本,也要同步到當前開發的分支上來,這樣才能保證**的一致性,master發包才安全。

建立分支

習慣性思維,假設遠端有master分支,那麼本地就從遠端檢出master分支,如果有dev-1.0.0這個開發分支,那麼就從遠端檢出dev-1.0.0這個分支,使用命令 git checkout -b dev-1.0.0 /origin/dev-1.0.0 。 這樣本地分支和遠端分支名字一樣,這是習慣性的問題,其實我們可以針對不同的需求,拉不同的分支。這種習慣貌似沒有。

比方說在做需求1,現在有不同的方案,方案1 拉取分支dev1. 方案2從原來**上拉取分支dev2. 對拉取的不同分支**進行測試,選定最優,提交到開發分支dev-1.0.0,並且刪除其他的方案分支。這樣很方便,不用手動多次拷貝**。

暫存分支

1、開發需求拉取乙個分支,在這分支上進行了**修改,但是沒有提交。

2、來了乙個緊急bug需要修改。這時候需要在原來**上進行修改。

3、如果不提交需求寫的**,使用git stash 進行暫時儲存。

4、儲存後,從原來的**分支拉取乙個分支出來bugfix分支,進行修改。

5、改完bug,提交上去。

6、git stash pop 恢復暫存的**,繼續開發。

【背景】 更新**git pull的時候,有時候更新不下來出現如下提示資訊。

此提示表示某個檔案更新下來的內容和本地修改的內容有衝突,需要先提交你的改變或者把本地的修改倉儲起來。

這裡提交改變是不現實的,功能還沒有開發完成。嘗試使用git stash

$ git stash

這樣本地的所有修改就都被暫時儲存起來 。

$ git stash list 可以看到儲存的資訊:

git stash暫存修改

其中stash@就是剛才儲存的標記。

2、pull內容

暫存了本地修改之後,就可以pull了。

$ git pull

3、還原暫存的內容

$ git stash pop stash@

auto-merging c/environ.c

conflict (content): merge conflict in c/environ.c

意思就是系統自動合併修改的內容,但是其中有衝突,需要解決其中的衝突。

4、解決檔案中衝突的的部分

開啟衝突的檔案,會看到類似如下的內容:

git衝突內容

其中updated upstream 和*****之間的內容就是pull下來的內容,====和stashed changes之間的內容就是本地修改的內容。碰到這種情況,git也不知道哪行內容是需要的,所以要自行確定需要的內容。

解決完成之後,就可以正常的提交了。

5 刪除stash。git stash drop

Git強大功能 分支管理

解決衝突 git staus 檢視git版本庫中狀態 可以檢視檔案衝突 顯示檔案中有衝突的地方需要手動去修改檔案。首先 git pull拉取最新的檔案 然後手動修改 再然後正常提交檔案就好了 在利用分支做一些其他功能時,我們在合併分支時,然後就需要刪除掉新建立的分支了 分支管理 分支合併用git m...

Git 新建分支和刪除分支

從dev 分支上拉取乙個自己的開發分支 1.切換分支到dev分支 git checkout dev 2.分支建立 本地倉庫 git checkout b why 3.將新分支推送到遠端倉庫 git push origin why 4.將當前分支與遠端分支關聯 git branch set upstr...

Git分支和指標

git中的分支本質上是個指向commit物件的指標。在當前commit點建立乙個新的分支test git branch test建立了乙個新的可變指標指向f30ab commit git 是如何知道你當前是在哪個分支上工作的 1 git儲存著乙個名為head的特別指標 2 head可以指向你正在工作...