当我没有变化时发生冲突
我想了解Git,我对它很陌生。 我在Github上有一个分支,我从别人的存储库中分出来,我正在试图贡献给他的存储库。
我做我的改变,我很高兴,所以我想要做一个拉请求。 但是我不能做拉请求,因为Github for Windows说它不能合并,没有冲突。 所以我这样做:
git fetch upstream
git merge upstream/master
然后我从其他人做的一些东西中得到一些冲突,我使用Beyond Compare解决这个问题。
然后,我通过单击Github for Windows中的创建拉取请求来创建拉取请求。 然后他看着我的变化,但他从不满意,所以他做了一些修改,然后向他的分支承诺。 他的叉子上的变化只显示1我的角色和他的化身在角落。
所以我想我应该得到他的新版本,所以我做到了:
git fetch upstream
git merge upstream/master
再次。
这样做会给我带来另一个我必须解决的冲突。 我不明白我为什么会遇到冲突,自从我上次合并后,我没有做任何事情。 我不应该只是得到他的叉子的确切副本吗?
此外,我的pull请求似乎列出了自从我开始为该项目提供贡献后所做的所有提交,它是不是应该显示自上次pull请求以来的提交?
编辑:
按照bg17aw的要求,这里是我的git config --list设置
alias.c=commit
alias.co=checkout
alias.dt=difftool
alias.mt=mergetool
alias.praise=blame
alias.ff=merge --ff-only
alias.st=status
alias.sync=!git pull && git push
apply.whitespace=nowarn
core.symlinks=false
core.autocrlf=true
core.editor=gitpad
core.preloadindex=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
color.ui=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle-ghfw.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
credential.helper=!github --credentials
filter.ghcleansmudge.clean=cat
filter.ghcleansmudge.smudge=cat
push.default=upstream
diff.tool=vs2013
diff.algorithm=histogram
difftool.prompt=false
difftool.bc4.cmd="c:/program files (x86)/beyond compare 3/bcomp.exe" "$LOCAL" "$REMOTE"
difftool.p4.cmd="c:/program files/Perforce/p4merge.exe" "$LOCAL" "$REMOTE"
difftool.vs2012.cmd="c:/program files (x86)/microsoft visual studio 11.0/common7/ide/devenv.exe" '//diff' "$LOCAL" "$REM
OTE"
difftool.vs2013.cmd="c:/program files (x86)/microsoft visual studio 12.0/common7/ide/devenv.exe" '//diff' "$LOCAL" "$REM
OTE"
merge.tool=bc3
mergetool.prompt=false
mergetool.keepbackup=false
mergetool.bc3.cmd="c:/program files (x86)/beyond compare 3/bcomp.exe" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
mergetool.bc3.trustexitcode=true
mergetool.p4.cmd="c:/program files/Perforce/p4merge.exe" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
mergetool.p4.trustexitcode=false
user.name=dallasm15
filter.hawser.clean=git hawser clean %f
filter.hawser.smudge=git hawser smudge %f
filter.hawser.required=true
diff.tool=bc4
difftool.bc3.path=c:/Program Files (x86)/Beyond Compare 4/bcomp.exe
difftool.bc4.path=c:/Program Files (x86)/Beyond Compare 4/bcomp.exe
push.default=simple
filter.lfs.clean=git lfs clean %f
filter.lfs.smudge=git lfs smudge %f
filter.lfs.required=true
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly
remote.origin.url=https://github.com/dallasm15/Khazad.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.ImpalerWrG.url=https://github.com/ImpalerWrG/Khazad.git
remote.ImpalerWrG.fetch=+refs/heads/*:refs/remotes/ImpalerWrG/*
remote.upstream.url=https://github.com/ImpalerWrG/Khazad
remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
branch.digging_creates_rocks.remote=origin
branch.digging_creates_rocks.merge=refs/heads/digging_creates_rocks
差异主要表明他用标签取代我的空间。
我没有足够的代表发表评论,但希望这将有助于作为答案:
我不明白我为什么会遇到冲突,自从我上次合并后,我没有做任何事情
既然你没有变化,就没有什么可以隐藏的。 我会在这种情况下使用:
git fetch origin
git reset --hard origin/master
(你的遥控器的命名可能不同)。
我不明白我为什么会遇到冲突,自从我上次合并后,我没有做任何事情。 我不应该只是得到他的叉子的确切副本吗?
如果您每次都遇到问题,可能会遇到有关git设置的问题。 你可以看到你的设置使用:
git config –list
现在,如果可能的话,你还应该检查回购所有者的设置。 查找core.autocrlf=true
来检查行结尾是否不是问题(如果他使用的是Mac / Linux并且您使用的是Windows机器,则有可能发生这种情况)。
还要查找core.filemode=false
。 这会阻止跟踪文件权限(如果您的设置为true,请将其更改为false)。 Git只知道755和644。
您的问题的另一个可能的原因是空格(制表符v空格)。 建议:始终使用设置来设置TAB = 4空格。 同样,你应该与回购所有者保持同步。 根据您使用的IDE,可以将其设置为与回购所有者的设置相匹配。
其他有用的东西,你可能会尝试到这个底部:
在一个文件上运行git diff filename
并将输出添加到您的问题中
使用Sourcetree作为一个免费的GUI来帮助你处理冲突的文件列表(你仍然可以使用命令行来了解你的git)
试试做:git pull --rebase
它存储您的更改会首先获取上游的更改,然后隐藏弹出窗口并在其上应用更改。
链接地址: http://www.djcxy.com/p/45121.html