我将WinMerge与git集成为difftool和mergetool。
问题是当我运行时:git difftool SomeBranch..HEAD
我正确打开了WinMerge,并正确显示了左侧和右侧窗格,但是在解决了差异后,我保存并退出但文件不受影响。
我注意到打开WinMerge时,我确实看到我的所有差异都是针对AppData中的临时文件完成的。这是上部差异窗格的外观(请注意,左侧和右侧的文件夹路径均为AppData):
我无法使WinMerge真正正确地打开difftool并让我更改/解决差异,并不能将更改真正保存到真实文件中-任何线索如何解决此问题?
注意:当“ mergetool”出现时,不会发生此问题(仅在difftool中)
注意:当像这样修改当前目录中的更改时:git difftool-不会发生问题(Winmerge在右窗格中显示实际文件,而不是临时文件)
这是我的.gitconfig文件设置:
[mergetool]
prompt = false
keepBackup = false
keepTemporaries = false
[merge]
tool = winmerge
[mergetool "winmerge"]
name = WinMerge
trustExitCode = true
cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e -dl \"Local\" -dr \"Remote\" $LOCAL $REMOTE
[diff]
tool = winmerge
[difftool "winmerge"]
name = WinMerge
trustExitCode = true
cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e $LOCAL $REMOTE
其他详细信息:
WinMerge版本:2.16.6.0
操作系统:Windows 10
Git版本:2.24.1.windows.2
答案 0 :(得分:1)
仅当您将提交与工作树文件进行比较时,才能在工作树中编辑文件。当您运行
class ReviewsController < ApplicationController
before_action :set_tea, only: [:new, :index, :create]
before_action :set_review, only: [:show, :edit, :update, :destroy]
# POST /teas/1/reviews
def create
# creating the review off the tea reveals intent better than doing
# it off the user
@review = @tea.reviews.new(review_params) do |r|
r.user = current_user
end
# Always check if the record is actually persisted
# - not just if the applications validations pass!
if @review.save
# you could also redirect to the review but this makes more
# sense from a ux perspective
redirect_to @tea, notice: 'Thank you for your review'
else
render :new
end
end
# GET /reviews/:id/edit
def edit
end
# PUT|PATCH /reviews/:id
def update
if @review.update(review_params)
redirect_to @review, notice: 'Review updated.'
else
render :edit
end
end
private
def set_tea
@tea = Tea.find(params[:tea_id])
end
def set_review
@review = Review.find(params[:id])
end
def review_params
params.require(:review).permit(:rating, :title)
end
end
您将git difftool SomeBranch
上的文件与工作树进行比较,然后可以编辑工作树文件。
但是当你跑步
SomeBranch
您比较两次提交。 git difftool SomeBranch..HEAD
将它们视为与工作树无关,因此,正如您所观察到的那样,您的所有编辑最终都存储在临时文件中。