我在我的本地计算机上做了一些更新,将它们推送到远程存储库,现在我正在尝试将更改提取到服务器并获取消息;
错误:合并将覆盖对以下文件的本地更改:
的wp-content/W3TC-配置/ master.php
请在合并之前提交更改或存储更改.
所以我跑了,
git checkout -- wp-content/w3tc-config/master.php
Run Code Online (Sandbox Code Playgroud)
并再次尝试,我收到相同的消息.我假设w3tc在服务器上的配置文件中改变了一些东西.我不关心本地副本或远程副本是否在服务器上(我认为远程副本是最好的),我只是希望能够合并其余的更改(插件更新).
有任何想法吗?
std*_*all 1180
您无法与本地修改合并.Git可以保护您免于丢失潜在的重要更改.
你有三个选择:
git commit -m "My message"
Run Code Online (Sandbox Code Playgroud)Stashing充当堆栈,您可以在其中推送更改,然后以相反的顺序弹出它们.
要藏匿,输入
git stash
Run Code Online (Sandbox Code Playgroud)
合并,然后拉藏:
git stash pop
Run Code Online (Sandbox Code Playgroud)使用git reset --hard
或git checkout -t -f remote/branch
运用 git checkout filename
Log*_*han 68
git stash
git pull <remote name> <remote branch name> (or) switch branch
git stash apply --index
Run Code Online (Sandbox Code Playgroud)
第一个命令将您的更改临时存储在存储中,并将其从工作目录中删除.
第二个命令切换分支.
第三个命令恢复存储在存储中的更改(该--index选项对于确保暂存的文件仍处于暂存状态非常有用).
ken*_*orb 22
您可以尝试以下方法之一:
对于简单的更改,尝试在拉动变化的同时进行变基,例如
git pull origin master -r
Run Code Online (Sandbox Code Playgroud)
因此,它将在获取后将您当前的分支应用于上游分支的顶部.
这相当于:checkout master,fetch和rebase origin/masterGit命令.
这是一种潜在危险的操作模式.它重写了历史,当你已经发布了这段历史时,它并不是一个好兆头.除非您
git-rebase(1)仔细阅读,否则请勿使用此选项.
如果您不关心本地更改,可以切换到其他分支临时(强制),然后将其切换回来,例如
git checkout origin/master -f
git checkout master -f
Run Code Online (Sandbox Code Playgroud)
如果您不关心本地更改,请尝试将其重置为HEAD(原始状态),例如
git reset HEAD --hard
Run Code Online (Sandbox Code Playgroud)
如果上面没有帮助,那么它可能是你的git规范化文件(.gitattributes)中的规则,所以最好提交它所说的内容.或者您的文件系统不支持权限,因此您必须filemode在git配置中禁用.
Dip*_*ick 18
这解决了我的错误:
我在分支:“A”
git stash
Run Code Online (Sandbox Code Playgroud)
移动到主分支:
git checkout master
git pull*
Run Code Online (Sandbox Code Playgroud)
移回我的分支:“A”
git checkout A
git stash pop*
Run Code Online (Sandbox Code Playgroud)
Mik*_*ike 12
所以我遇到的情况如下:
错误:对以下文件的本地更改将被合并覆盖:wp-content/w3tc-config/master.php请在合并之前提交更改或存储它们.
除了之前,它是远程的:所以实际上这个:
remote:错误:对以下文件的本地更改将被merge覆盖:some/file.ext请在提交之前提交更改或存储它们,然后才能合并.
发生的事情是(我认为,不是百分之百正面)git post接收钩子开始运行并且由于远程服务器存储库中的移动变化而搞砸了,理论上,这不应该被触及.
所以我最后通过跟踪post-receive钩子找到了这个,不得不去服务器上的远程存储库,并且有更改(这不在我的本地存储库,实际上,说它匹配,没有变化,没有任何提交,最新,等等.)所以在本地,没有变化,在服务器上,我然后做了一个git checkout -- some/file.ext然后本地和远程存储库实际匹配,我可以继续工作,并部署.不完全确定这种情况是如何发生的,尽管有几十个开发人员加上IT变更可能与它有关.
小智 11
试试这个
git stash save ""
Run Code Online (Sandbox Code Playgroud)
再试一次拉
就我而言,我不想保留文件,所以这对我有用:
Git 2.11 及更新版本:
git clean -d -fx .
Run Code Online (Sandbox Code Playgroud)
旧版 Git:
git clean -d -fx ""
Run Code Online (Sandbox Code Playgroud)
参考: http : //www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x 表示忽略的文件以及 git 未知的文件也将被删除。
-d 意味着除了未跟踪的文件之外还删除未跟踪的目录。
-f 需要强制它运行。
如果您有新创建的文件,您可以创建一个本地更改补丁,拉入远程合并并在远程合并完成后应用本地补丁,如下所示:
git add .
git diff --cached > mypatch.patch
git reset --hard
git pull
git apply mypatch.patch
Git 将合并更改并为未合并的更改创建 .rej 文件。
按照 Anu 的建议,如果您在应用补丁时遇到问题,请尝试:
git apply --reject --whitespace=fix mypatch.patch
这个答案git: patch does not apply有关此问题的详细讨论
享受您对功能的持续工作,并在完成后提交本地更改。
对我来说这有效:
git reset --hard
进而
git pull origin <*current branch>
在那之后
git checkout <*branch>
对我来说,只是git reset --hard有效。
承诺不是一个选择,因为没有什么可以承诺的。
隐藏不是一个选择,因为没有什么可以隐藏的。
看起来它可能来自排除的文件.git/info/exclude并已经git update-index --assume-unchanged <file>编辑了一些文件。
| 归档时间: |
|
| 查看次数: |
878272 次 |
| 最近记录: |