代碼剛提交暫存區,組長突然要我把新增代碼 Commit另一分支怎麼辦?

在這裏插入圖片描述

1. 背景

最近剛換公司,上家公司使用 svn 進行代碼的版本控制,而現在公司使用的是git 。因爲自己平常也有使用 git,所以基本使用操作還是沒有問題的。

最近需要做的新功能需求討論了一週,這期間我提前在 master 分支上編寫大量基礎代碼。在正式開始開發時,領導跟我說你切換到xx分支上進行開發吧。咱們採用的是 Git Flow 的方式進行代碼版本控制的,分支我已經建好了。 於是我就跟組長說:我已經編寫了好多代碼了在master分支上了。 組長說:那就把你新搞的代碼拷貝到新的分支上吧。

Oh My God! 代碼有好多,複製粘貼倒是可以,但是一是慢二來就是可能會覆蓋別人的代碼。於是查看 git 官方手冊發現一個神奇的命令 git stash瞬間完美解決。

2.案例還原演示

這裏我通過簡單操坐來還原具體案例場景:在 stashOper 項目上已經有一個 Hello.java 文件提交,然後將在master 分支上將已經提交到暫存區的 ForOper.java 文件複製到 b1分支上。接下來開始案例場景還原。

首先創建包含已經 commit 的 Hello.java文件的 stashOper 項目。 具體操作如下:

創建空的 stashOper 目錄並在改目錄下執行 git init

image.png

cd:進入文件夾命令
mkdir:創建文件夾命令
git init:創建git倉庫

創建Hello.java 文件

image.png

touch:創建文件命令
vim:編輯文件命令,這裏具體使用不在進行闡述。

添加一個打印hello java 的簡單程序,具體代碼如下:

image.png

驗證 Hello.java 程序。

image.png

將Hello.java 通過 git add添加到暫存區,然後在通過 git commit添加到本地倉庫。

image.png

git add:將代碼添加到暫存區
git commit:將代碼添加到本地倉庫

創建新的分支通過 git checkout -b 分支名稱具體操作如下:

image.png

也可以通過 git branch 分支名稱 來創建分支,這個命令不會切換的新建的分支上。

通過 git checkout master 切換到 master 分支,然後創建 ForOper.java文件並添加如下代碼:

image.png

image.png
驗證ForOper.java程序,然後通過 git add 將他們添加到暫存區中。這裏操作就不在進行演示,可以參照添加Hello.java 到本地倉庫的操作。

接下來要注意了,使用 git stash save 註釋內容 將ForOper.java先保存起來。具體操作如下:

image.png

切換到 b1 分支,通過git checkout 命令。
image.png

通過 git status 查看目前b1分支狀態,如下圖所示b1分支暫存區和本地倉庫沒有任何文件。

image.png
通過 git stash list 查看在master上保存的文件內容。具體如下圖:

image.png

最後通過 git stash apply 將master 分支上暫存區的內容拷貝到b1分支上。如下圖所示在b1分支上暫存區已經有ForOper.java了,執行 git commit 就可以將其提交到 b1 分支上了。

image.png

git stash apply :使用存儲,但不會把存儲從存儲中進行刪除,直接執行git stash apply默認是用第一個,即stash@{0},如果要使用具體的存儲,git stash apply stash@{$num} , 比如第二個:git stash apply stash@{1}

3.總結

最後介紹一下 git 存儲 命令 git stash 經常使用操作如下:

  • git stash: 添加不帶標籤的存儲,不建議使用不方便查找。
  • git stash save “標籤內容”:添加帶標籤的存儲。
  • git stash list:查看存儲列表。
  • git stash apply:使用存儲但是不會刪除。例如:git stash pop apply@{0}
  • git stash drop :將存儲從列表中刪除。例如:git stash pop drop@{0}
  • git stash pop:使用存儲,使用後會自動刪除已經使用的存儲。例如:git stash pop stash@{0}
  • git stash clear:刪除所有的存儲。

4.參考文獻

  • https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%82%A8%E8%97%8F%E4%B8%8E%E6%B8%85%E7%90%86
  • https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html
發佈了138 篇原創文章 · 獲贊 525 · 訪問量 28萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章