偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Git 系列(四):在 Git 中進行版本回退

開源 Linux
在這篇文章中,你將學到如何查看項目中的歷史版本,如何進行版本回退,以及如何創(chuàng)建 Git 分支以便你可以大膽嘗試而不會出現(xiàn)問題。

在這篇文章中,你將學到如何查看項目中的歷史版本,如何進行版本回退,以及如何創(chuàng)建 Git 分支以便你可以大膽嘗試而不會出現(xiàn)問題。

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

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

恢復一個文件

當你意識到一個本來很好文件被你完全改亂了。我們都這么干過:我們把文件放到一個地方,添加并提交,然后我們發(fā)現(xiàn)它還需要做點***的調(diào)整,***這個文件被搞得面目全非了。

要把它恢復到***的完好狀態(tài),使用 git checkout 從***的提交(即 HEAD)中恢復:

  1. $ git checkout HEAD filename 

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

  1. $ git log --oneline 
  2. 79a4e5f bad take 
  3. f449007 The second commit 
  4. 55df4c2 My great project, first commit
  5. $ git checkout 55df4c2 filename 

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

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

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

  1. $ git log --oneline 
  2.  
  3. d512580 restoring filename from first commit 
  4.  
  5. 79a4e5f bad take 
  6.  
  7. f449007 The second commit 
  8.  
  9. 55df4c2 My great project, first commit

 

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

回退時間線

恢復文件的另一種方式是回退整個 Git 項目。這里使用了分支的思想,這是另一種替代方法。

如果你要回到歷史提交,你要將 Git HEAD 回退到以前的版本才行。這個例子將回到最初的提交處:

  1. $ git log --oneline 
  2.  
  3. d512580 restoring filename from first commit 
  4.  
  5. 79a4e5f bad take 
  6.  
  7. f449007 The second commit 
  8.  
  9. 55df4c2 My great project, first commit
  10.  
  11. $ git checkout 55df4c2  

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

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

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

  1. $ git checkout -b remix 
  2.  
  3. Switched to a new branch 'remix'  

現(xiàn)在你已經(jīng)切換到了另一個分支,在你面前的是一個替代的干凈工作區(qū),準備開始工作吧。

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

  1. $ git status 
  2.  
  3. On branch master 
  4.  
  5. nothing to commit, working directory clean 
  6.  
  7. $ git checkout -b crazy_idea 
  8.  
  9. Switched to a new branch 'crazy_idea'  

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

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

  1. $ git checkout master 

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

  1. $ git checkout master 
  2.  
  3. $ git merge crazy_idea  

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

遠程協(xié)作

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

有好幾種不同的方式來設置 Git 以便讓多人可以同時在一個項目上工作,所以首先我們要克隆倉庫,你可能已經(jīng)從某人的 Git 服務器或 GitHub 主頁,或在局域網(wǎng)中的共享存儲上克隆了一個倉庫。

工作在私人倉庫下和共享倉庫下唯一不同的是你需要把你的改變 push 到別人的倉庫。我們把工作的倉庫稱之為本地(local)倉庫,其他倉庫稱為遠程(remote)倉庫。

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

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

有一個 origin 遠程庫非常有用,因為它有異地備份的功能,并允許其他人在該項目上工作。

如果克隆沒有繼承 origin 遠程庫,或者如果你選擇以后再添加,可以使用 git remote 命令:

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

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

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

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

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

合并分支

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

  1. $ git checkout contributor 
  2. $ git pull 
  3. $ less blah.txt  ### 檢查改變的文件 
  4. $ git checkout master 
  5. $ git merge contributor 

如果你正在使用 GitHub 或 GitLab 以及類似的東西,這個過程是不同的。但克隆項目并把它作為你自己的倉庫都是相似的。你可以在本地工作,將改變提交到你的 GitHub 或 GitLab 帳戶,而不用其它人的許可,因為這些庫是你自己的。

如果你想要讓你克隆的倉庫接受你的改變,需要創(chuàng)建了一個拉取請求(pull request),它使用 Web 服務的后端發(fā)送補丁到真正的擁有者,并允許他們審查和拉取你的改變。

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

下一部分我們將整合一些有用的插件到 Git 中來幫你輕松的完成日常工作。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2020-08-29 19:28:08

版本回退命令代碼

2019-01-21 09:28:32

版本命令程序員

2016-08-02 11:06:34

開源Linux版本控制

2016-08-03 15:32:50

GitLinux開源

2025-05-26 09:52:42

IDEAGit分支

2018-12-07 12:30:16

CVSGit版本控制

2020-11-23 07:27:22

Git Flow

2023-06-19 15:38:38

JavaScripAPI

2009-06-22 10:29:11

集成測試Spring

2016-08-23 10:39:38

GitLinux開源

2011-01-26 09:09:06

版本控制系統(tǒng)GitLinux

2016-12-19 14:59:55

Git二進制管理

2016-09-23 20:04:26

2015-08-20 10:42:17

2011-08-01 10:41:59

Xcode 條件編譯

2016-08-05 12:58:44

GitLinux開源

2022-12-07 07:43:21

2021-03-24 09:30:02

Jupyter not單元測試代碼

2023-10-18 18:31:04

SQL查詢數(shù)據(jù)

2023-08-02 08:02:30

Redis數(shù)據(jù)原生方法
點贊
收藏

51CTO技術棧公眾號