我有时碰到这个:
git clone myrepo
foo.sh
以解决问题。git add foo.sh
,git commit
,git push
在服务器上,git pull
remote: Counting objects: 1, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 5 (delta 4), reused 5 (delta 4)
Unpacking objects: 100% (5/5), done.
From ...
c78..e4d master -> origin/master
Updating c78..e4d
error: Your local changes to the following files would be overwritten by merge:
foo.sh
Please, commit your changes or stash them before you can merge.
Aborting
有没有办法让Git变得更聪明,并注意到“本地更改”与合并更改相同?显然我可以简单地git reset --hard
',但我想仔细检查我远程做出的改变是否真的相同。
答案 0 :(得分:1)
我想仔细检查一下我做的远程变化是否真的相同。
你可以,但不能自动通过git。
虽然您可以使用脚本similar to this one,但不是直接执行“rm
”,而是可以将origin/yourBranch
中的文件与当前工作树中的文件进行比较(如果不是相同的)。
# Fetch the newest code
git fetch
# Delete all files which are being added, so there
# are no conflicts with untracked files
for file in `git diff HEAD..origin/master --name-status | awk '/^A/ {print $2}'`
do
# diff between "$file" and $(git show origin/master:$file)
done
答案 1 :(得分:1)
您可以直接对新树进行区分。 git diff origin/master
将工作目录与上游更改(您刚刚尝试合并的树)进行比较,因此应该回答您关于更改是否匹配以及是否可以安全地丢弃本地更改的问题。
git文档警告不要进行拉动并与未经修改的更改合并;我认为你无法获得你所要求的自动行为。