Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 为什么本地更改会被合并覆盖?_Git_Git Merge - Fatal编程技术网

Git 为什么本地更改会被合并覆盖?

Git 为什么本地更改会被合并覆盖?,git,git-merge,Git,Git Merge,我有下一个本地更改: diff --git a/lib/Art.pm b/lib/Art.pm index c8fd249..4bd479f 100644 --- a/lib/Art.pm +++ b/lib/Art.pm @@ -61,6 +61,7 @@ sub startup { $self->hook( around_action => \&Art::Controller::_log_request ); + $self->

我有下一个本地更改:

diff --git a/lib/Art.pm b/lib/Art.pm
index c8fd249..4bd479f 100644
--- a/lib/Art.pm
+++ b/lib/Art.pm
@@ -61,6 +61,7 @@ sub startup {


     $self->hook( around_action  =>  \&Art::Controller::_log_request        );
+    $self->hook( around_action  =>  \&Art::Controller::_store_referral     );
     $self->hook( around_action  =>  \&Art::Controller::_json_as_urlencoded );
     $self->hook( after_dispatch =>  \&Art::Controller::_mail_exception     );
     # NOTICE: before_render is called even before rendering included template
藏品的下一个变化是:

diff --git a/lib/Art.pm b/lib/Art.pm
index 0dde0ec..cff11c9 100644
--- a/lib/Art.pm
+++ b/lib/Art.pm
@@ -32,6 +32,7 @@ sub startup {
     push @{ $self->plugins->namespaces }, __PACKAGE__ .'::Plugin';
     $self->plugin( Config =>  { file => 'conf/' .$self->moniker .'.conf' } );
     $self->plugin( 'TagHelpers::FetchPanel' );
+    $self->plugin( 'UserReferral',  key => 'r' );

     # default_page is used in redirections. Redirect to site root by default
正如您所见,这些更改并不重叠

为什么在尝试应用此隐藏时会出现此错误

error: Your local changes to the following files would be overwritten by merge:
    lib/Art.pm
有没有办法应用此修补程序而不出现此错误

有没有办法应用此修补程序而不出现此错误

出现此错误是因为,正如错误消息所述,您对文件lib/Art.pm进行了本地更改,该更改将被合并覆盖。因此,您应该做的第一件事是通过以下方式提交本地更改:

git add lib/Art.pm
# and commit any other work you want
git commit -m 'local changes to Art.pm'
之后,您可以通过以下方式应用隐藏:

git stash apply

请注意,此处仍然可能会出现合并冲突。如果你这么做了,这只意味着Git很谨慎,不想假设它应该使用Art.pm的最终版本。在发生冲突的情况下,该文件将布满冲突标记,看起来是啊,当然。但若我没记错的话,只需将文件添加到索引中就足够了,而无需提交文件,但这将如何解决呢?你可以从藏匿处获得一个工作版本,也可以从其他地方获得一个分阶段版本。您将如何解决此问题?在这种情况下,没有合并冲突。更改仅应用于wc和finish。我们可以用多种方法来处理这个问题,但这可能是我的第一选择。通过git commit-amend进行一次提交,您始终可以将两次提交挤在一起。git stash包含两次或有时三次提交,git stash show仅显示通过这两次提交中的一次(特别是工作树提交)计算的差异。冲突似乎是通过另一个索引提交发生的。如果应用stash with-index,就会出现这种情况,它使用git-read-tree而不是git-read-tree-reset。如果是这样的话,只需省略-index,Git就可以丢弃冲突保存的索引。@torek我怀疑会有一个替代我给出的答案的方法,而你实际上想到了。实际上,我可能不会像担心哪个藏匿犯是罪魁祸首那样深。在任何情况下,我的答案都会出错吗?@TimBiegeleisen:进行提交通常会允许你使用-index应用隐藏。您仍然可以得到合并冲突,尽管在这种情况下,我不期望会有任何冲突;如果合并冲突严重,您可能必须使用git stash branch或等效工具来应用,同时仍然保留单独的索引和工作树。底线是,使用-index,即使进行新的提交也不能保证足够,但它通常会工作。从根本上说,不使用索引的应用更容易,因为它允许Git放弃大部分索引提交。