vs2017 git 操作重置、還原、挑揀對比


工具 :vs2017 git 操作
背景:本地與遠程分支同步
操作:還原、挑揀、重置--hard 、重置--mixed
分支:本地1、本地2、origin\本地1
 
基本操作
1:分支:本地2-add something like //testthis function 提交
2:checkout 本地1 后,本地2分支合並入本地1分支,同步\origin。
3:本地1分支add something like //testthis2 function 提交,同步\origin。
------------------完成操作---------進行試驗-----------------

1:還原
對本地1 中 合並本地2 的提交1進行還原,發現本地1 中沒了//testthis function
結論:還原針對的是某一次提交的所有commit,做了反向操作,新生成一個commit覆蓋了這個操作。
后續,再次合並本地2 進入本地1 無法將//testthis function 新增,證明了反向操作的存在。
2:挑揀
還原本地2的提交后,對本地2的提交進行挑揀操作,發現代碼又出現了。
結論:挑揀是針對兩次commit之間不同代碼的比對,后進行合並不同的代碼。且針對的也是某一次提交。
3:重置--hard
假設目前有三次提交A-B-C,對A進行“重置--hard”后發現本地1的代碼回到了A。參考 https://www.cnblogs.com/kidsitcn/p/4513297.html
結論重置--hard 將我們的head、index、工作區代碼全部回滾到A。
但是需要注意的origin\中的內容並不會修改,本地如果現在直接“同步”操作后,做的重置--hard操作又沒用了。
 
4:重置--mixed
假設目前后三次提交A-B-C,對於A進行“重置--mixed”后發現本地代碼沒變,
但是head、index發生了更變,本地代碼沒變!自己可以修改本地代碼后再次提交,但是對比的head、index不同了。
以下是另外一個博主給出的解釋:
所有該branch上從original HEAD(commit)到你重置到的那個commit之間的所有變更將作為local modifications保存在working area中,(被標示為local modification or untracked via git status),但是並未staged的狀態,你可以重新檢視然后再做修改和commit。

附錄:
  • HEAD
這是當前分支版本頂端的別名,也就是在當前分支你最近的一個提交
  • Index
index也被稱為staging area,是指一整套即將被下一個提交的文件集合。他也是將成為HEAD的父親的那個commit
  • Working Copy
working copy代表你正在工作的那個文件集


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM