我有一个名为my_pcc_branch.patch的补丁.
当我尝试应用它时,我得到以下消息:
$ git apply --check my_pcc_branch.patch
warning: src/main/java/.../AbstractedPanel.java has type 100644, expected 100755
error: patch failed: src/main/java/.../AbstractedPanel.java:13
error: src/main/java/.../AbstractedPanel.java: patch does not apply
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
我该如何解决这个问题?
我无法弹出我的藏匿处,因为我合并了一个显然与我的藏品冲突的分支,现在我的藏匿处似乎无法弹出.
app.coffee: needs merge
unable to refresh index
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?
固定!
事实证明,实际问题是来自合并的未解决的合并冲突,而不是存储会导致合并冲突.
解决方案:提交冲突的文件.
我有一堆阶段性和非阶段性的更改,我想快速切换到另一个分支然后切换回来.
所以我使用以下方式进行了更改:
$ git stash push -a
Run Code Online (Sandbox Code Playgroud)
(事后我可能会用--include-untracked
而不是--all
)
然后,当我去弹出藏匿处时,我遇到了很多错误:
$ git stash pop
foo.txt already exists, no checkout
bar.txt already exists, no checkout
...
Could not restore untracked files from stash entry
Run Code Online (Sandbox Code Playgroud)
似乎没有从藏匿处恢复任何更改.
我也试过,$ git stash branch temp
但显示相同的错误.
我确实找到了解决这个问题的方法:
$ git stash show -p | git apply
Run Code Online (Sandbox Code Playgroud)
现在避免了灾难,但这提出了一些问题.
为什么这个错误首先发生,下次如何避免?
我希望能够使用索引的当前状态为我的项目运行测试,忽略未提交的工作更改(我后来计划将其添加到预提交挂钩).但是,我无法确定如何以永不导致合并冲突的方式删除然后恢复非索引更改.我需要这个,因为它是由脚本运行的,所以它不应该在完成后改变存储库状态.
git stash --include-untracked --keep-index
和git stash pop
接近,但在许多情况下,即使没有在两个命令之间所做的更改导致合并冲突.
例如:
mkdir project; cd project; git init .;
# setup the initial project with file.rb and test.rb
cat > file.rb <<EOF
def func()
return 42
end
EOF
cat > test.rb <<EOF
#!/usr/bin/env ruby
load './file.rb'
if (func() == 42)
puts "Tests passed"
exit 0
else
puts "Tests failed"
exit 1
end
EOF
chmod +x test.rb
git add .
git commit -m "Initial commit"
# now change file.rb and add the …
Run Code Online (Sandbox Code Playgroud) 我必须对我的 repo 应用补丁并且正在运行
git apply --directory=$PWD xxxxx.patch
Run Code Online (Sandbox Code Playgroud)
由于我不会深入的原因,我不能git am
在这个实例中使用,我需要使用目录标志。
git 告诉我:
$> git apply --directory=$PWD xxxxx.patch
code1/xxxxx.patch:337: trailing whitespace.
< one partial line of code >
warning: 1 line adds whitespace errors.
Run Code Online (Sandbox Code Playgroud)
我已经读到空白警告并不严重,不应阻止 git 应用补丁。但是,无论什么原因,git 都没有应用补丁。存储库中的当前文件均未更改。知道该怎么做吗?