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

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

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

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

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

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

恢復一個文件

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

要把它恢復到***的完好狀態,使用 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 

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

  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

 

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

回退時間線

恢復文件的另一種方式是回退整個 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 從項目中分離出來,可以讓你如所需的那樣工作,而不會因為偶爾的記錄而影響之后的工作。

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

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

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

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

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

  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'  

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

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

  1. $ git checkout master 

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

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

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

遠程協作

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

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

工作在私人倉庫下和共享倉庫下唯一不同的是你需要把你的改變 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 

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

  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 倉庫時,你可以合并任意測試分支到主分支。當團隊協作時,你可能想在將它們合并到主分支之前檢查他們的改變:

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

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

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

克隆一個項目通常是在 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

版本控制系統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查詢數據

2023-08-02 08:02:30

Redis數據原生方法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区在线观看免费视频 | 久久丁香 | 黄网站免费入口 | 色婷婷久久综合 | 日韩欧美国产一区二区 | 91麻豆精品国产91久久久久久 | 综合久久久久久久 | 午夜久久久久久久久久一区二区 | 中国人pornoxxx麻豆 | 国产成人在线视频免费观看 | 热久久久久 | 在线观看国产视频 | 日日夜夜天天 | 91精品国产综合久久婷婷香蕉 | 亚洲综合五月天婷婷 | 香蕉国产在线视频 | 欧美久久久久久久久 | 国产成人免费视频 | 人成在线| 欧美日一区 | 麻豆亚洲| 日韩视频专区 | 日本在线你懂的 | 中文在线亚洲 | 精品成人av| 韩日精品一区 | 成年人在线观看视频 | 日韩精品一区二区三区免费观看 | 欧美亚洲另类在线 | 91精品免费 | 久久激情网 | 国产精品一区在线观看 | 日韩欧美手机在线 | 在线观看免费黄色片 | 亚洲一区二区综合 | 欧美中文字幕一区二区 | 在线不卡视频 | 午夜久久久| 欧美精品成人一区二区三区四区 | 国产成人精品一区二区三区在线 | 午夜久久久 |