幾十張動圖告訴你 Git到底是怎麼玩的


#儘管Git 能夠很好地決定如何合併分支以及如何向文件添加修改,但它並不總是完全自己做決定。當我們想要合併的兩個分支的同一檔案中的同一行程式碼上有不同的修改,或者一個分支刪除了一個檔案而另一個分支修改了這個檔案時,Git 就不知道如何取捨了。 #####################在這樣的情況下,Git 會問你想要保留哪一個選項?假設在這兩個分支中,我們都編輯了 README.md 的第一行。 ############

當嘗試合併這些分支時,Git 會向你展示衝突出現的位置。我們可以手動移除我們不想保留的修改,保存這些修改,再次新增這個已修改的文件,然後提交這些修改。

#

#
在我們正在rebase 的提交上,我們可以執行以下6 個動作:
reword:修改提交資訊;
-
#edit:修改此提交;
############################################ squash:將提交整合到前一個提交中;
#fixup:將提交整合到前一個提交中,不保留該提交的日誌訊息;
exec:在每個提交上執行我們想要rebase 的命令;
drop:移除該提交。

#

#
#當我們不想要先前提交的修改時,就會用到這個指令。也許這是一個 WIP 提交或可能是引入了 bug 的提交,這時候就要執行 git reset。
git reset 能讓我們不再使用目前檯面上的文件,讓我們可以控制 HEAD 應該指向的位置。
軟重置
#軟重置會將HEAD 移至指定的提交(或與HEAD 相比的提交的索引),而不會移除該提交之後加入的修改!
假設我們不想保留新增了一個 style.css 檔案的提交 9e78i,而且我們也不想保留新增了一個 index.js 檔案的提交 035cc。但是,我們確實又想要保留新加入的 style.css 和 index.js 檔案!這是軟重置的一個完美用例。

#
有時候我們不想保留特定提交引入的修改。不同於軟重置,我們應該再也無需訪問它們。 Git 應該直接將整體狀態直接重置到特定提交之前的狀態:這甚至包括你在工作目錄和暫存檔案上的修改。

#
假設 ec5be 新增了一個 index.js 檔案。但之後我們發現其實我們再也不需要由這個提交引入的修改了。那就還原 ec5be 提交吧!
#

### ##########當一個特定分支包含我們的活動分支所需的某個提交時,我們對那個提交執行cherry-pick!對一個提交執行 cherry-pick 時,我們會在活動分支上建立一個新的提交,其中包含由揀選出來的提交所引入的修改。 ############

透過在這個遠端分支上執行 git fetch,我們就可以在本地取得這些修改。這不會以任何方式影響你的本地分支:fetch 只是單純地下載新的資料而已。


#
git reflog 是一個非常有用的指令,可以顯示已經執行過的所有動作的日誌。包括合併、重置、還原,基本上包含你對你的分支所做的任何修改。
#

假設我們其實並不需要合併原有分支。當我們執行 git reflog 指令時,我們可以看到這個 repo 的狀態在合併前位於 HEAD@{1}。那我們就執行一次 git reset,將 HEAD 重新指向在 HEAD@{1} 的位置。

以上是幾十張動圖告訴你 Git到底是怎麼玩的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

運行 H5 項目需要以下步驟:安裝 Web 服務器、Node.js、開發工具等必要工具。搭建開發環境,創建項目文件夾、初始化項目、編寫代碼。啟動開發服務器,使用命令行運行命令。在瀏覽器中預覽項目,輸入開發服務器 URL。發布項目,優化代碼、部署項目、設置 Web 服務器配置。

GiteePages靜態網站部署失敗:404錯誤排查與解決在使用Gitee...

在BeegoORM框架下,如何指定模型關聯的數據庫?許多Beego項目需要同時操作多個數據庫。當使用Beego...

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

H5頁面需要持續維護,這是因為代碼漏洞、瀏覽器兼容性、性能優化、安全更新和用戶體驗提升等因素。有效維護的方法包括建立完善的測試體系、使用版本控制工具、定期監控頁面性能、收集用戶反饋和製定維護計劃。

Go語言中bytes.makeSlice導致的內存洩漏問題分析在Go語言開發中,使用bytes.Buffer進行字符串拼接時,如果處理不當�...
