我在Git中有一个存储库.我做了一个分支,然后对主人和分支做了一些改变.
然后,几十次提交之后,我意识到分支处于比主设备好得多的状态,所以我希望分支"成为"主设备并忽略主设备上的更改.
我无法合并它,因为我不想在master上保留更改.我该怎么办?
额外:在这种情况下,'old'主服务器已经被push转到另一个存储库,例如GitHub.这怎么改变了?
我有一个存储库,它有一些不好的提交(本例中为D,E和F).
ABCDEF主和原点/主
我专门用一个修改了本地存储库git reset --hard.我在重置之前选了一个分支,所以现在我有一个看起来像的回购:
A-B-C master
\ D-E-F old_master
A-B-C-D-E-F origin/master
Run Code Online (Sandbox Code Playgroud)
现在我需要这些糟糕提交的一些部分,所以我选择了我需要的位并做了一些新的提交,所以现在我在本地有以下内容:
A-B-C-G-H master
\ D-E-F old_master
Run Code Online (Sandbox Code Playgroud)
现在我想把这种状态推到远程仓库.但是,当我尝试做一个git pushGit时,礼貌地给我刷掉了:
$ git push origin +master:master --force
Total 0 (delta 0), reused 0 (delta 0)
error: denying non-fast forward refs/heads/master (you should pull first)
To git@git.example.com:myrepo.git
! [remote rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@git.example.com:myrepo.git'
Run Code Online (Sandbox Code Playgroud)
如何让远程仓库获取本地仓库的当前状态?
我想在历史记录中更深层次地修改提交消息,并且我已经推送了许多新的提交.
如何更改提交消息?可能吗?
我理解Pro Git中关于风险的方案dev.作者基本上告诉你如何避免重复提交:
不要将已推送到公共存储库的提交重新绑定.
我将告诉你我的具体情况,因为我认为它不完全适合Pro Git场景,我仍然最终得到重复的提交.
假设我与当地同行有两个远程分支机构:
origin/master origin/dev
| |
master dev
Run Code Online (Sandbox Code Playgroud)
所有四个分支包含相同的提交,我将开始开发origin/dev:
origin/master : C1 C2 C3 C4
master : C1 C2 C3 C4
origin/dev : C1 C2 C3 C4
dev : C1 C2 C3 C4
Run Code Online (Sandbox Code Playgroud)
经过几次提交后,我将更改推送到master:
origin/master : C1 C2 C3 C4
master : C1 C2 C3 C4
origin/dev : C1 C2 C3 C4 C5 C6 # (2) git push
dev : C1 C2 C3 C4 C5 C6 # (1) git …Run Code Online (Sandbox Code Playgroud) 在我的本地仓库中,我有一个提交错误的提交消息.
我已经发布了错误的提交消息git push.
现在远程仓库(GitHub托管)也有不正确的提交消息.
我已经尝试了git commit --amend,但发现在这种情况下它对我不起作用,因为我已经做了额外的提交,因为不正确的提交.
你会如何解决这种情况?
我有一个本地分支,用于git中的日常开发工作.我的工作流程是:
这一切都运行正常,但我遇到的大多数建议都说不应该"推"私人分支,定期执行rebase.
这里的问题是,在这种情况下,本地分支不会备份到服务器,保存工作的唯一方法是将其合并回"pushable"分支(即origin/master)
在这种情况下,您对工作流程的建议是什么?
谢谢!
更新:我意识到我有一个原始要求(避免使用外部实用程序)是不必要的限制.
我目前的解决方案是将所有存储库存储在云同步文件夹中 - 这样我就可以免费获得备份.
通常,我只是跑
git add file
git commit
git push
Run Code Online (Sandbox Code Playgroud)
但如果我在推送之前修改了提交(with git commit --amend),则下一次推送失败
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)
如何让git在不合并分支的情况下推送更改?我只有一个分支(master),我是唯一一个使用这个回购的人,为什么这么说呢?
git branch -a:
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
编辑:使用gitk HEAD @{u},我看到我有2个分支,一个用原始提交,另一个用修改提交.
使用Eclipse/EGit如何编辑我在本地进行的提交的提交消息,但尚未推送到存储库?
我做了一个提交并推动回购.后来我通过使用修改了提交消息git commit --amend,在弹出窗口中我输入了新消息.我可以通过看到新消息git log.经过这一切,我的git status节目就像这样.我不知道如何将这个变化推向回购.
On branch master
Your branch and `origin/master` have diverged,
and have 1 and 1 different commit(s) each, respectively.
Run Code Online (Sandbox Code Playgroud)
期待一个可行的解决方案.