項目總體已完成。昨日進行優化和新增功能。
但是忘了切換到對應的分支后再去修改代碼,改完代碼后就不讓切換分支了。
隨后先( git add . )提交了代碼,( git commit -m "" )上傳了備注信息,再次切換
但不知道切換了分支之后,本地代碼也會變成那個分支最后提交完的狀態。
比如:切換回了20天前的分支,隨后本地的目錄、代碼也變成了20天前這個分支最后更新時的樣子。
所以當看到本地項目內的組件缺少了,代碼缺少了;直接懵逼了。
然后一頓操作猛如虎的瞎搞成功涼了。。。由此記錄一下正確的處理方法:
以及新學習到的 git命令操作
首先盡量要記得,先切換到對應的分支去,再進行對代碼的操作;
若遇到 a分支 內的代碼寫了一些,立刻被通知需要修改 b分支 內的代碼,但是又不想立刻提交 a分支 的代碼時:
可以用:( git diff )查看 a分支工作區文件的修改內容(有)
1、首先用:( git stash ) 將 a分支的工作區文件內容 放到暫存區
再次用:( git diff )查看 a分支工作區文件的修改內容(沒有)
2、隨后:切換 b分支 去修改代碼,完成后再回到 a分支
3、利用:( git stash pop ) 或( git stash apply ) 將 a分支的工作區文件內容 取出來,恢復到暫存時的狀態
( git stash pop ) 與 ( git stash apply ) 的區別為:
用( git stash )命令之后會在stash列表中生成一個對應的信息,
使用 ( git stash apply )命令恢復,stash列表中的信息是會繼續保留的;
而使用( git stash pop )命令進行恢復,會將stash列表中的信息進行刪除。
進階操作:
( git stash save "要添加的備注信息" ) :與 `git stash` 命令功能相同,區別是可以添加備注
( git stash --all ) 或( git stash save --all "要添加的備注信息" ) :可以將未被跟蹤過的和忽略的文件都儲存到暫存區
多次使用 ’git stash’ 命令后,棧里充滿了未提交的代碼,這時候可能對將哪個版本恢復回來困惑;
1、第一次修改暫存
2、 第二-第三次修改暫存
( git stash list )可以將當前的Git棧信息打印出來,你只需要將找到對應的版本號:
( git stash pop stash@{$num} )恢復某版本緩存的工作內容,將緩存堆棧中的對應stash刪除,並將對應修改應用到當前的工作目錄下
( git stash apply stash@{$num} )恢復某版本緩存的工作內容,但不會把存儲從存儲列表中刪除,並將對應修改應用到當前的工作目錄下
上面命令出錯誤了,原因:花括號被認為是代碼塊執行標識符,若想正常使用,可用反引號 `` 進行轉義
實際可用命令為:( git stash pop stash@`{0`} )、( git stash apply stash@`{0`} )
stash 暫存區內太多存儲,想要刪除如下:
( git stash drop stash@{$num} ) :丟棄stash某個版本的存儲,從列表中刪除這個存儲(別忘了要使用 反引號 `` 進行轉義)
( git stash clear ):刪除所有緩存的stash版本
一些別人寫的 `git stash` 使用:https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html ; https://blog.csdn.net/tpz789/article/details/113150456
回到正軌:
如果代碼出問題了,可以使用版本回滾,將代碼回滾到某提交版本:
首先( git log )查看所有版本號,按 q 為退出
隨后( git reset --hard 需要的版本號 )將代碼回滾到自己需要的版本號
最后( git push -f )強制提交,將雲端的版本號替換成回退后的版本號
強制推送還可寫為:( git push origin 雲端分支名 –force )
切換了舊的分支之后,本地代碼也回到了舊分支的代碼狀態,切換則可變回
這時候將最新分支的代碼合並到舊分支里去,舊分支的代碼也會變成最新的
首先切換到舊分支( git checkout 舊分支 ),查看自己所屬分支( git branch )
隨后合並最新分支的代碼( git merge 最新分支 ),將代碼變成最新的
將雲端某分支的代碼下拉到自己的本地分支:
首先創建或切換到本地分支:( git checkout -b 分支名 )若已存在也不需要 -b
然后將雲端的分支代碼下拉到本地:( git pull origin 分支名 )
本地分支與雲端分支同名
另外插入個知識:
克隆雲端項目代碼:( git clone 倉庫的http鏈接 )
`git clone` 命令用於克隆GitHub上的項目到本地目錄
先進入本地存放目錄后,使用該命令
克隆的項目永遠都是:master分支下的項目代碼
哪怕進入了別的分支。克隆的也依舊是:master分支下的項目代碼