如何强制覆盖本地文件git pull
?
方案如下:
这是我得到的错误:
错误:未经跟踪的工作树文件'public/images/icon.gif'将被合并覆盖
如何强制Git覆盖它们?这个人是设计师 - 通常我会手动解决所有冲突,因此服务器具有他们只需要在他们的计算机上更新的最新版本.
可能重复:
使当前Git分支成为主分支
我的Git存储库中有两个分支:
master
seotweaks
(最初创建master
)我创建seotweaks
的目的是迅速将其合并回来master
.然而,那是三个月前,这个分支的代码是13个版本master
.
它已经有效地成为我们的工作主分支,因为现在所有的代码master
或多或少已经过时了.
我知道非常糟糕的做法,经验教训.
你知道如何master
用那些替换分支的所有内容seotweaks
吗?
我可以删除所有内容master
并合并,但这不是最佳实践.
当我使用我的源代码工作时,我做了我惯常的事情提交,然后我推送到远程存储库.但后来我注意到我忘了在源代码中组织我的导入.所以我做了修改命令来替换以前的提交:
> git commit --amend
Run Code Online (Sandbox Code Playgroud)
不幸的是,提交不能被推回到存储库.这被拒绝了:
> git push origin
To //my.remote.repo.com/stuff.git/
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '//my.remote.repo.com/stuff.git/'
Run Code Online (Sandbox Code Playgroud)
我该怎么办?(我可以访问远程存储库.)
我正在使用Git.我从一个远程仓库做了拉,并得到一条错误信息:
"请输入一条提交消息来解释为什么这种合并是必要的,特别是如果它将更新的上游合并到一个主题分支中."
我尝试输入一条消息并按下Enter但没有任何反应.
我怎么告诉Git /终端我输入了我的消息?
我在OS X上使用终端.
我有两个分支,email
和staging
.staging
是最新的,我不再需要email
分支中的旧更改,但我不想删除它们.
所以,我只是想的所有内容转储staging
到email
让他们都指向同一个commit.那可能吗?
我让master和origin/master陷入困境,不再对该分支的变化感兴趣.
我按照这些说明让我的本地主人指向正确的位置 使当前的git分支成为主分支
git checkout better_branch
git merge --strategy=ours master # keep the content of this branch, but record a merge
git checkout master
git merge better_branch # fast-forward master up to the merge
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,除了git status给出
C:\data\localprojects\Beko2011Azure [master]> git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 395 and 2 different commits each, respectively.
#
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
所以我现在如何说服origin/master(github)反映我的主人.可以安全地放弃在原点/主人身上孤立的任何东西.
除了主人之外,我还有一个分支机构的git仓库.我想让那个分支成为主人 - 完全覆盖主人.显然我可以进行合并,但这会导致很多冲突,当我知道我总是希望来自附加分支的文件而不是主文件时,解决它们似乎需要做很多工作.
是否可以将分支转换为主分支,或者进行合并并告诉git始终支持来自一个分支的文件而不是另一个分支?
提前致谢!
我的一个队友错误地将一些提交推到了我们的主要开发部门.我们是一个小型的,并置的团队.我们的远程存储库托管在内部服务器上.
这是我们提交日志的顶部(所有这些提交都已被推送):
$ git log develop -6 --pretty=oneline --abbrev-commit
faada93 Merge branch 'develop' of <our_repo_path>.git
244d174 Support classes again
a97a877 Pruned all unused references (again).
8c29252 Merge branch 'develop' of <our_repo_path>.git
a78b993 Support models & methods - product types & categories
da8b496 Resolved JIRA issue PPF-182
Run Code Online (Sandbox Code Playgroud)
da8b496
是我们想要保留在develop
分支中的最后一个提交,所以我们需要还原最后的5个提交.我们创建了一个新分支,8c29252
以继续在"功能分支"中工作.
我尝试了许多事情,在这个答案和Linus的这篇文章的指导下,最终做了你在下面的终端历史中看到的内容.但我不确定我最终做的是"正确的方式".我发现的信息很复杂; 我无法辨别这个特定问题的"最佳解决方案".
我选择的方法(见下面的详细信息)是否能够在不损害我们历史的情况下还原这5个提交?有没有更简单或"更正确"的方法来完成同样的事情?
除此之外,我考虑从da8b496
(git checkout -b new-develop da8b496
)创建一个新的分支并放弃我们当前的develop
分支,但这感觉不对.
首先,我创建了提交一个新的分支a78b993
和8c29252
,因为这些提交包含我们要保持并最终合并回到我们的主要开发分支的工作.
$ git …
Run Code Online (Sandbox Code Playgroud) 想象一下这样一种情况:你有两个同一个项目的分支,第一个分支的一部分在另一个分支上有重大的重构.但有一段时间你需要保持两个分支功能,所以你正在修复错误和两个关键功能添加,有时以不对称的方式.在某些时候,你需要将重构分支合并到原始分支上.在这种情况下使用的最佳技术是什么?是否仍然可以保持历史清洁?
但更重要的是,在这种情况下我最初的策略应该是什么?
我最初尝试推送我的(第一次!)git repo:
$ git push helloworld
Run Code Online (Sandbox Code Playgroud)
但我得到了回报:
To git-smichaels@free5.projectlocker.com:helloworld.git
! [rejected] HEAD -> master (non-fast forward) error:
failed to push some refs to 'git-smichaels@free5.projectlocker.com:helloworld
git'
Run Code Online (Sandbox Code Playgroud)
所以我找到了另一个关于"修改提交"的StackOverflow问题,并从那里尝试了一个建议而不知道它是否会对我有所帮助:
KaiserSosa@SMICHAELS /c/test/helloworld (master)
$ git push helloworld +master:master
Run Code Online (Sandbox Code Playgroud)
有效!
但我不知道为什么它解决了我的问题:(
有人可以解释为什么这有效,但" git push helloworld
"不是吗?
git ×10
git-commit ×2
git-merge ×2
branch ×1
git-amend ×1
git-branch ×1
git-commands ×1
git-fetch ×1
git-pull ×1
git-push ×1
git-rebase ×1
git-revert ×1
github ×1
macos ×1
merge ×1
overwrite ×1