如何在远程以前提交的代码中提取或修改一小段已提交的代码

时间:2014-05-26 02:13:31

标签: git

我需要在app/views/cgi_testing_seeds/index.html.haml中提取一段代码, 形成此提交' 77df270',因为它应归其他提交所有。

恢复或回滚到该提交非常复杂' 77df270' 然后再次重做所有剩余的提交,

例如,如果我只想恢复index methodCgiTestingSeedsController.rb的代码,

并将其添加到提交4b733c5,如何?

或者提取方法的代码并将其保持在暂存状态,如何?

在Git中更容易做到这一点。

简要记录

4b733c5 - (HEAD, feature/testing_seeds_model) Scaffold:Testing seed and generate testing data via 'faker gem' (7 minutes ago) <poc7667>
2fd8204 - (develop) Merge branch 'hotfix/wrong_column_names_in_CGIparamters' into develop (4 days ago) <poc7667>
052e2ff - Remove 'name' in 'cgi_attributes' and fix wrong name for 'default_value' (4 days ago) <poc7667>
77df270 - Scaffold: CgiTestingSeed (2 days ago) <poc7667>

在提交77df270

中更改了文件
77df270 - Scaffold: CgiTestingSeed (2 days ago) <poc7667>
app/assets/javascripts/cgi_testing_seeds.js.coffee
app/controllers/cgi_testing_seeds_controller.rb
app/helpers/cgi_testing_seeds_helper.rb

提交77df270中的CgiTestingSeedsController.rb

class CgiTestingSeedsController < ApplicationController
  before_action :set_cgi_testing_seed, only: [:show, :edit, :update, :destroy]

  # GET /cgi_testing_seeds
  # GET /cgi_testing_seeds.json
  def index
    @cgi_testing_seeds = CgiTestingSeed.all
  end

  # GET /cgi_testing_seeds/1
  # GET /cgi_testing_seeds/1.json
  def show
  end

1 个答案:

答案 0 :(得分:1)

  

例如,如果我只想在CgiTestingSeedsController.rb中恢复index方法的代码,

您可以考虑使用git diff:

制作补丁
git diff 77df270 77df270~ > revert.diff
vi revert.diff # leave only changes regarding the `index` method 

请注意订单77df270 77df270~:来自的差异您所做的更改(77df270更改前的内容:{{1 }}:这样做是为了还原 77df270~中的更改。

  

并将其添加到提交4b733c5中,如何?

您可以apply your diff patch file使用git apply(作为in here):

77df270

由于它不会创建提交,因此您可以使用git apply revert.diff 修改当前的最新提交。