有没有一种很好的方法来解释如何在Git中解决合并冲突?
可能重复:
使当前Git分支成为主分支
我的Git存储库中有两个分支:
masterseotweaks(最初创建master)我创建seotweaks的目的是迅速将其合并回来master.然而,那是三个月前,这个分支的代码是13个版本master.
它已经有效地成为我们的工作主分支,因为现在所有的代码master或多或少已经过时了.
我知道非常糟糕的做法,经验教训.
你知道如何master用那些替换分支的所有内容seotweaks吗?
我可以删除所有内容master并合并,但这不是最佳实践.
我不是一个git master,但是我已经和它一起工作了一段时间,有几个不同的项目.在每个项目中,我总是从那时git clone [repository]起,总是可以git pull,只要我没有突出的变化,当然.
最近,我不得不恢复到以前的分支,并且这样做了git checkout 4f82a29.当我再次准备好拉,我发现我必须将我的分支设置回主人.现在,我不能使用笔直git pull,而是必须指定git pull origin master,这很烦人,并告诉我,我不完全了解发生了什么.
更改了哪些不允许我在git pull没有指定原始主文件的情况下执行直接操作,以及如何将其更改回来?
更新:
-bash-3.1$ cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[branch "master"]
[remote "origin"]
url = git@github.com:user/project.git
fetch = refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
更新2:要清楚,我明白我的原始方法可能不正确,但我需要修复此回购,以便我可以git pull再次使用.目前,git pull导致:
-bash-3.1$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your …Run Code Online (Sandbox Code Playgroud) 当我在我的项目中有开发人员访问权限时将代码推送到git时出现问题,但是当我有主访问权限时一切正常.问题出在哪里?以及如何解决它?
错误信息:
错误:您不能将代码推送到此项目的受保护分支.
...
错误:未能推送一些参考...
自从当前分支分支以来,在分支上获取提交日志的最佳方法是什么?我目前的解决方案是:
git log $(git merge-base HEAD branch)..branch
Run Code Online (Sandbox Code Playgroud)
git-diff的文档表明它git diff A...B等同于git diff $(git-merge-base A B) B.另一方面,git-rev-parse的文档表明它r1...r2被定义为r1 r2 --not $(git merge-base --all r1 r2).
为什么这些不同?请注意,这git diff HEAD...branch给了我想要的差异,但相应的git log命令给了我更多的东西.
在图片中,假设:
x---y---z---branch
/
---a---b---c---d---e---HEAD
我想得到一个包含提交x,y,z的日志.
git diff HEAD...branch 给出了这些提交git log HEAD...branch给出x,y,z,c,d,e.我知道如何解决这个问题:
user@host$ git pull
Updating 9386059..6e3ffde
error: Your local changes to the following files would be overwritten by merge:
foo.bar
Please, commit your changes or stash them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)
但是,是不是有办法让git pull做stash和pop舞蹈给我吗?
如果此命令具有不同的名称,则可以.
创建shell别名git stash; git pull; git stash pop是一种解决方案,但我寻找更好的解决方案.
我正在使用git flow工具,我遇到了一些问题.我的git分支已经分歧了.我读过主分支,'origin/master'有分歧,如何'分散'分支'?并尝试按照步骤,尝试合并和rebase我的本地存储库.
$ git flow feature finish showFindLogs
Branches 'develop' and 'origin/develop' have diverged.
And branch 'develop' may be fast-forwarded.
$ git merge origin/develop
Already up-to-date.
$ git rebase origin/develop
Current branch feature/showFindLogs is up to date.
$ git status
# On branch feature/showFindLogs
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
我怎么能摆脱这个?我已经完成了git flow功能,我只想将我的更改发送到遥控器.谢谢!
有没有之间的差异git rebase upstream/master和git pull --rebase upstream master,如果是这样,是什么?遥控器可以是任何遥控器,不一定是上游遥控器.
git status 告诉我,我的分支和我从另一个存储库开始的分支已经分歧:
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 13 and 13 different commit(s) each, respectively.
Run Code Online (Sandbox Code Playgroud)
但每个的提交历史是相同的.也就是说git log,使用相同的SHA-1哈希以相同的顺序显示相同的提交.这是最后13次提交,以及之前的所有事情.
这是怎么回事?!或者我误解了一些基本的东西 - git对我来说都是新的.
这是一个很长的故事,我是如何进入这个混乱的 - git-svn,cygwin,EGit,pull --rebase与虚假的冲突 - 但我想知道这种"分歧没有任何差异"是否可能是由于换行?我在记事本中打开了文件,并阅读了很多关于svn/git/cygwin和CRLF的内容,但没有任何启示.
编辑 确定.以上大部分都不是真正的问题.也许我不明白git log或某些事情搞砸了......
我有两个存储库.如果我去rep_A并运行,git log我得到相同的结果(特别是相同的SHA-1),就像我去rep_B并运行一样git log.
在rep_A,如果我运行,git log origin/master我会得到我期望的不同提交历史.(不同的SHA-1,但相同的消息 - 我是如何创造这个混乱的另一个故事.)
git remote -v show 向我保证原产地是我所期望的.
git log在rep_B上,表现不如我所料.就像它给了我rep_A的提交历史.我错过了什么?
根据文档,git pull执行git fetch然后执行git merge,但是在这种情况下执行git pull origin master应该执行git fetch origin master吗?但是,它似乎没有这样做.这是一个例子.
假设我的远程源主站(在我的情况下在GitHub上)具有以下历史:
commit 1111111 : my first commit
commit 2222222 : a commit from someone else
Run Code Online (Sandbox Code Playgroud)
我只在本地进行了第一次提交作为以下节目
git checkout master
git log --pretty=format:'%h' -n 1
1111111
git checkout origin/master
git log --pretty=format:'%h' -n 1
1111111
Run Code Online (Sandbox Code Playgroud)
从这里开始,我看看结果如下:
git checkout master
git pull origin master
git log --pretty=format:'%h' -n 1
2222222
git checkout origin/master
git log --pretty=format:'%h' -n 1
1111111
Run Code Online (Sandbox Code Playgroud)
可以看出,拉实际上确实使用来自远程源的新提交来更新我的主分支,但是我的本地origin/master仍然是它的位置.强迫我做以下事情
git fetch origin master …Run Code Online (Sandbox Code Playgroud) git ×9
git-pull ×3
branch ×2
git-add ×1
git-branch ×1
git-commit ×1
git-fetch ×1
git-flow ×1
git-merge ×1
git-push ×1
git-rebase ×1
git-stash ×1
github ×1
gitlab ×1
merge ×1