成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

git reset, git checkout, git revert 區別

移動開發
git reset, git checkout, git revert 命令是最有用的三條 git 命令。他們可以幫助你撤銷 repo 的一些操作,并且前兩條命令既可以用于 commit 級別,也可以用于 file 級別。

團隊中大多數成員使用 sourceTree 和 github 兩款 git 工具,然而大家對于圖形化工具提供的 reset,checkout,revert 功能點并不是很了解,甚至于混淆,然后憑借猜測去使用。功夫不負有心人,在嘗試過多次沖突處理或分支開發的坑后,終于形成了自己的一套使用方式,可喜可 賀。然而問題的解決方案的并不是效率***的,內部的執行過程我們也不清楚,這對于一個自律的程序藝術家是無法接受的。基于這個問題,翻譯這篇博客,為 git 中高級用戶的 undo 操作提供參考。鼓勵在熟悉命令行操作再通過圖形化工具提高開發效率。水平有限,釋疑為主,翻譯為輔

Reset Checkout and Revert

[[146137]]

原文地址:https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting

git reset, git checkout, git revert 命令是最有用的三條 git 命令。他們可以幫助你撤銷 repo 的一些操作,并且前兩條命令既可以用于 commit 級別,也可以用于 file 級別。

因為他們很相似,所以很容易混淆。這片文章,我們將比較他們的相同和不同之處。

閱讀本文前需要了解 git repo 的三大 components,分別是 working directory(代碼倉庫) staged snapshot(快照:add的緩存庫) commit history(commit歷史) ,這將更好的幫助你理解這三條命令。

[[146138]]

commit 級別的操作

傳遞給 git resetgit checkout的參數會決定命令的作用范圍。當命令并不包括含一個文件路徑時,命令作用于整個 commit

Reset:

commit 級別上,git reset 命令移動 HEAD 到當前分支的一個 commit, 這可以用來撤銷當前分支的一些 commit

例如,下面的命令會讓 `hotfix` 分支回退兩個 commits

git checkout hotfix

git reset HEAD~2

先前在 HEAD 之前的兩次 commit 現在處在 HEAD 之后,這意味著他們在下一次 git 提交時被作為垃圾刪掉,換句話說這兩次提交會被拋棄。如下圖所示:

[[146139]]

git reset用于撤銷未被提交到遠端的改動。除了可以移動當前分支的HEAD,你可以通過不同的標記選擇修改 staged snapshot 或者 working directory

  • --softstaged snapshotworking directory 都未被改變 (建議在命令行執行后,再輸入 git status 查看狀態)

  • --mixedstaged snapshot 被更新, working directory 未被更改。【這是默認選項】(建議同上)

  • --hardstaged snapshotworking directory 都將回退。

--hard 很危險,它會直接回退你之前所有的修改,使用前,可以事先保存 commit id.

[[146140]]

【這些標記經常和HEAD一起使用。例如,git reset --mixed HEAD可撤銷所有緩存改動,但是保留他們在工作目錄下。git reset --hard HEAD可徹底刪除沒有提交的改動。】

checkout

到現在為止,你應該已經熟悉 commit 級別的 git checkout 了。當你傳送一個 branch name 名字時,你將更換當前的分支.

git checkout hotfix

上面的命令會切換 HEAD 到不同的分支,并且更新當前的 working directory 去匹配。因為會覆蓋當前的本地更改,所以更換分支前git強制你徹底放棄或者提交存儲當前的更改。不同于 git reset, git checkout 不會廢棄任何分支或提交。

[[146141]]

你也可以 checkout 到任何一次 commit,通過提供 commit Id 作為參數.

比如下面的命令。

git checkout HEAD~2/[commit id]

[[146142]]

這對于 review repo 的某個 version 的代碼很有用。然而,如果再次添加新的提交就無法返回原先的狀態。因此,你應該在修改前總是創建一個新的分支。

Revert

git revert 命令通過創建一次新的 commit 來撤銷一次 commit 所做出的修改。這種撤銷的方式是安全的,因為它并不修改 commitm history, 比如下邊的命令將會查出倒數第二次(即當前commit的往前一次)提交的修改,并創建一個新的提交,用于撤銷當前提交的上一次 commit

git checkout hotfix

git revert HEAD~2

如下圖所示:

[[146143]]

File 級別的操作

git resetgit checkout 命令同樣可以接受一個可選的文件路徑作為參數,這樣可以將操作限制在一個單獨的文件中。

Reset:

當調用一個文件路徑時,git reset 命令會更新 staged snapshot 去匹配某次 commit。 下面的命令將會使文件回退一個 commit

git reset HEAD~1 [文件](不建議使用)

[[146144]]

【--soft、--mixed、--hard標記此時不起作用,會更新staged snapshot,但不更新working directory】

Checkout

git checkout 命令 和 git reset 類似,除了它會更新 working directory, 而不是 staged snapshot

如下命令將會更新 working directory 去匹配某次 commit

git checkout HEAD~1 [文件]

 

[[146145]]

 

Summary:

commands scope common user cases
git reset Commit Discard commits in a private branch or throw away uncommited changes
git reset File Unstage a file
git checkot Commit switch between branches or inspect old snapshot
git checkout File Discard changes in the working directory
git revert commit Undo commits in a public branch
git revert File 不支持
責任編輯:chenqingxiang 來源: MexiQQ
相關推薦

2022-02-10 09:56:33

git revertgit resetGit

2020-10-27 07:31:35

GitGit RevertGit Reset

2021-08-19 08:36:22

Git ResetGit Revert版本

2016-08-02 11:06:34

開源Linux版本控制

2016-08-03 15:32:50

GitLinux開源

2024-07-22 14:14:01

2018-07-27 10:39:13

對象存儲Git

2015-08-07 09:36:25

git筆記

2024-07-05 10:59:26

2021-08-13 07:56:13

Git pullGit fetch倉庫里

2025-04-11 08:26:41

2020-01-18 18:41:13

GitGit服務器開源

2020-03-05 16:47:51

Git內部儲存

2021-08-17 07:15:16

Git RebaseGit Merge面試

2020-11-23 07:27:22

Git Flow

2022-02-09 18:55:30

LazygitGit命令維護項目

2017-02-08 13:33:34

AndroidJavaPhp

2023-11-30 07:54:55

Gitstack

2015-10-12 09:34:29

git教程

2013-12-16 15:19:10

GitDocker
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美网站一区 | www久久av | 天天操夜夜操 | 欧美日韩中文字幕 | 久久久久久久一区二区 | 亚洲精品乱码久久久久久黑人 | 欧美日本韩国一区二区 | 亚洲一区免费在线 | 国产免费福利 | 老子午夜影院 | 国产日韩精品一区二区三区 | 久久国产精品久久久久久 | 久久精品国产99国产精品 | 中文字幕国产精品 | 在线看亚洲 | 亚洲欧洲成人av每日更新 | 亚洲 中文 欧美 日韩 在线观看 | 日韩电影免费在线观看中文字幕 | 亚洲一区二区国产 | 一区二区三区在线免费观看 | 日韩欧美三级电影在线观看 | 人成久久 | 国产一区二区精 | 国产高清精品网站 | 夜夜草av| 男人阁久久 | 日本成人中文字幕在线观看 | 国产免费va| 日韩福利在线 | 日日夜夜免费精品视频 | 日本又色又爽又黄的大片 | 欧美在线观看一区 | 啪啪免费网 | 日韩毛片网 | 久久久久久国模大尺度人体 | 成人精品一区二区三区中文字幕 | 国产精品三级 | 国产a爽一区二区久久久 | 中文字幕视频一区 | 久久com| 精品国产鲁一鲁一区二区张丽 |