中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Git版本回退的示例分析

發布時間:2022-02-19 10:58:01 來源:億速云 閱讀:125 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Git版本回退的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Git版本回退的示例分析”這篇文章吧。

以前,如果是要去除某一塊功能,我都是選擇性刪除,選擇性注釋,然后前后邏輯各種查看,各種比較。每一次,改完這些我總感覺心好累啊!!!然后,我就發現了 Git 一個非常強大的功能:*回滾*。當然我還是喜歡叫它:版本回退

Git版本回退的示例分析

在你的 Git 項目的歷史中,你的位置就像是搖滾專輯中的一個片段,由一個被稱為 HEAD 的 標記來確定(如磁帶錄音機或錄音播放器的播放頭)。要在你的 Git 時間線上前后移動 HEAD ,需要使用 git checkout 命令。

git checkout

命令的使用方式有兩種。最常見的用途是從一個以前的提交中恢復文件,你也可以整個倒回磁帶,切換到另一個分支。

回退時間線

當你意識到一個本來很好文件被你完全改亂了。我們都這么干過:我們把文件放到一個地方,添加并提交,然后我們發現它還需要做點最后的調整,最后這個文件被搞得面目全非了,要把它恢復到最后的完好狀態,使用 git checkout 從最后的提交(即 HEAD)中恢復:

$ git checkout HEAD filename

如果你碰巧提交了一個錯誤的版本,你需要找回更早的版本,使用 git log 查看你更早的提交,然后從合適的提交中找回它:

$ git log --oneline
79a4e5f bad take
f449007 The second commit
55df4c2 My great project, first commit.

$ git checkout 55df4c2 filename

現在,以前的文件恢復到了你當前的位置。(任何時候你都可以用 git status 命令查看你的當前狀態)因為這個文件改變了,你需要添加這個文件,再進行提交:

$ git add filename
$ git commit -m 'restoring filename from first commit.'

使用 git log 驗證你所提交的:

$ git log --oneline
d512580 restoring filename from first commit
79a4e5f bad take
f449007 The second commit
55df4c2 My great project, first commit.

從本質上講,你已經倒好了磁帶并修復了壞的地方,所以你需要重新錄制正確的。

恢復一個文件

恢復文件的另一種方式是回退整個 Git 項目。這里使用了分支的思想,這是另一種替代方法,如果你要回到歷史提交,你要將 Git HEAD 回退到以前的版本才行。這個例子將回到最初的提交處:

$ git log --oneline
d512580 restoring filename from first commit
79a4e5f bad take
f449007 The second commit
55df4c2 My great project, first commit.

$ git checkout 55df4c2

當你以這種方式倒回磁帶,如果你按下錄音鍵再次開始,就會丟失以前的工作。Git 默認假定你不想這樣做,所以將 HEAD 從項目中分離出來,可以讓你如所需的那樣工作,而不會因為偶爾的記錄而影響之后的工作。

如果你想看看以前的版本,想要重新做或者嘗試不同的方法,那么安全一點的方式就是創建一個新的分支。可以將這個過程想象為嘗試同一首歌曲的不同版本,或者創建一個混音的。原始的依然存在,關閉那個分支做你想做的版本吧。

就像記錄到一個空白磁帶一樣,把你的 Git HEAD 指到一個新的分支處:

$ git checkout -b remix
Switched to a new branch 'remix'

現在你已經切換到了另一個分支,在你面前的是一個替代的干凈工作區,準備開始工作吧。

也可以不用改變時間線來做同樣的事情。也許你很想這么做,但切換到一個臨時的工作區只是為了嘗試一些瘋狂的想法。這在工作中完全是可以接受的,請看:

$ git status
On branch master
nothing to commit, working directory clean

$ git checkout -b crazy_idea
Switched to a new branch 'crazy_idea'

現在你有一個干凈的工作空間,在這里你可以完成一些奇怪的想法。一旦你完成了,可以保留你的改變,或者丟棄他們,并切換回你的主分支。

若要放棄你的想法,切換到你的主分支,假裝新分支不存在:

$ git checkout master

想要繼續使用你的瘋狂的想法,需要把它們拉回到主分支,切換到主分支然后合并新分支到主分支:

$ git checkout master
$ git merge crazy_idea

git 的分支功能很強大,開發人員在克隆倉庫后馬上創建一個新分支是很常見的做法;這樣,他們所有的工作都在自己的分支上,可以提交并合并到主分支。Git 是很靈活的,所以沒有“正確”或“錯誤”的方式(甚至一個主分支也可以與其所屬的遠程倉庫分離),但分支易于分離任務和提交貢獻。不要太激動,你可以如你所愿的有很多的 Git 分支。完全自由。

遠程協作

到目前為止你已經在自己舒適而私密的家中維護著一個 Git 倉庫,但如何與其他人協同工作呢?

有好幾種不同的方式來設置 Git 以便讓多人可以同時在一個項目上工作,所以首先我們要克隆倉庫,你可能已經從某人的 Git 服務器或 GitHub 主頁,或在局域網中的共享存儲上克隆了一個倉庫,工作在私人倉庫下和共享倉庫下唯一不同的是你需要把你的改變 push 到別人的倉庫。我們把工作的倉庫稱之為本地倉庫,其他倉庫稱為遠程倉庫。

當你以讀寫的方式克隆一個倉庫時,克隆的倉庫會繼承自被稱為 origin 的遠程庫。你可以看看你的克隆倉庫的遠程倉庫:

$ git remote --verbose
origin  seth@example.com:~/myproject.Git (fetch)
origin  seth@example.com:~/myproject.Git (push)

有一個 origin 遠程庫非常有用,因為它有異地備份的功能,并允許其他人在該項目上工作,如果克隆沒有繼承 origin 遠程庫,或者如果你選擇以后再添加,可以使用 git remote 命令:

$ git remote add seth@example.com:~/myproject.Git

如果你修改了文件,想把它們發到有讀寫權限的 origin 遠程庫,使用 git push。第一次推送改變,必須也發送分支信息。不直接在主分支上工作是一個很好的做法,除非你被要求這樣做:

$ git checkout -b seth-dev
$ git add exciting-new-file.txt
$ git commit -m 'first push to remote'$ git push -u origin HEAD

它會推送你當前的位置(HEAD)及其存在的分支到遠程。當推送過一次后,以后每次推送可以不使用 -u 選項:

$ git add another-file.txt
$ git commit -m 'another push to remote'$ git push origin HEAD

合并分支

當你工作在一個 Git 倉庫時,你可以合并任意測試分支到主分支。當團隊協作時,你可能想在將它們合并到主分支之前檢查他們的改變:

$ git checkout contributor
$ git pull
$ less blah.txt  ### 檢查改變的文件$ git checkout master
$ git merge contributor

如果你正在使用 GitHub 或 GitLab 以及類似的東西,這個過程是不同的。但克隆項目并把它作為你自己的倉庫都是相似的。你可以在本地工作,將改變提交到你的 GitHub 或 GitLab 帳戶,而不用其它人的許可,因為這些庫是你自己的,如果你想要讓你克隆的倉庫接受你的改變,需要創建了一個拉取請求,它使用 Web 服務的后端發送補丁到真正的擁有者,并允許他們審查和拉取你的改變。

克隆一個項目通常是在 Web 服務端完成的,它和使用 Git 命令來管理項目是類似的,甚至推送的過程也是。然后它返回到 Web 服務打開一個拉取請求,工作就完成了。

以上是“Git版本回退的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

git
AI

大港区| 阳山县| 枞阳县| 光山县| 长寿区| 昆山市| 左云县| 华阴市| 道孚县| 灌云县| 泾阳县| 长沙市| 康保县| 嘉禾县| 中西区| 赣榆县| 嘉黎县| 崇礼县| 南京市| 阳朔县| 西宁市| 富锦市| 双牌县| 博爱县| 马龙县| 临桂县| 砚山县| 宜章县| 驻马店市| 澄江县| 舟曲县| 普定县| 禄丰县| 竹山县| 长岛县| 长兴县| 固安县| 鄯善县| 衡东县| 四子王旗| 福贡县|