可能重复:
使当前Git分支成为主分支
我的Git存储库中有两个分支:
masterseotweaks(最初创建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)
我该怎么办?(我可以访问远程存储库.)
我理解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存储库管理.对于每个构建,都会检出并编译最新版本.现在我想告诉hudson不要使用最新版本,而是使用旧版本的代码(由我指定).
在哈德森,我有两个可以设置的参数.第一个"存储库名称",默认值为"origin",第二个refspec为value +refs/heads/*:refs/remotes/origin/*.我尝试了类似origin/[commitid]或类似的东西+refs/heads/*:refs/remotes/origin/[commitid].但没有任何工作按预期.
我想我必须使用参数化作业,以便我可以将提交作为参数提供给作业.
我如何告诉hudson使用特定的提交而不是最新的提交?
我把我的git repo搞砸了一下.我在一个单独的分支中处理了一个功能.完成工作后,我切换到主人将其合并,但我的伙伴推了几个与我发生冲突的文件.合并之后,冲突和推动新的变化,我看到我也承诺了我的伙伴的旧变化.
现在我想重做这个提交/合并.我试过
git reset --soft HEAD^但是当我想要推送时,我收到了此错误消息Merge the remote changes before pushing again.
谁能帮我?
我正在尝试撤消已经推送到远程存储库的一些更改,我已经在本地完成了
git reset --hard COMMIT-HASH
Run Code Online (Sandbox Code Playgroud)
但是现在它不会让我在没有先拉动的情况下推动,这当然会击败目的.我试过了:
git push -f
Run Code Online (Sandbox Code Playgroud)
出了哪些错误:
Total 0 (delta 0), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull first)
To git@xxx.beanstalkapp.com:/yyy.git
! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@xxx.beanstalkapp.com:/yyy.git'
Run Code Online (Sandbox Code Playgroud)
那么如何将我的新的正确版本的分支到遥控器?
我在我的工作站上有一个本地git仓库,我将其推送到Dropbox位置,以便我可以将其下载到我的笔记本电脑上git pull remote dropbox.
昨天我检查了我的工作站上的更改,提交了它并且git push dropbox编辑了它.我没有git pull从我的笔记本电脑上做一个,因为我怀疑我最终会把这个提交扔掉.
今天我决定抛弃那个提交,所以在我的工作站上我做了:
git reset --hard HEAD~1
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在我想把它推回到Dropbox,这样在我的笔记本电脑上我可以从那里合并和提交.所以在我的工作站上我尝试过:
git push dropbox
Run Code Online (Sandbox Code Playgroud)
而git抱怨说:
![已拒绝] master - > master(非快进)错误:无法将某些引用推送到'\ My Dropbox\dev\repos\xcast.git'为了防止您丢失历史记录,拒绝了非快进更新在再次按下之前合并远程更改(例如'git pull').有关详细信息,请参阅"git push --help"中的"关于快进的注意事项"部分.
如何让我的恶化和Dropbox再次同步?
如果我将错误的初始提交(或多个)推送到远程存储库并想要清除它/销毁它 - 我可以通过命令执行吗?
将它从服务器中完全删除非常重要,因此它不会占用磁盘空间.
EG今天我推出了一个包含dll,sdfs等的整个Visual Studio项目.首先,这些文件非常大,其次有些是由其他开发人员的VS修改而不能合并的.这让我有点谷歌,我发现这些文件应该被忽略.但是第一次提交已经使我的存储库变得混乱.我想删除它并释放磁盘空间.
有可能删除git repo并通过主机网站(assembla)再次添加它,但这对我来说听起来不是解决方案..有更专业的方式吗?
更新:
我尝试了以下答案的建议,但它没有用:'git push -f''git push --force''git push origin -f''git push origin --force'导致:
$ git push --force
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 6.85 KiB, done.
Total 19 (delta 3), reused 0 (delta 0)
remote: error: denying non-fast-forward refs/heads/master (you should pull fir
)
To git@git.assembla.com:xxxxx.git
! [remote rejected] master -> master (non-fast-forward)
error: failed to push some refs …Run Code Online (Sandbox Code Playgroud) 我用了
git reset --hard dc082bc...由于一些错误的提交,恢复到分支回到所需的先前状态.这让我当地的分公司很好.但是,我想将'origin'上的分支回滚到同一个commit,以便我可以重新开始.谁能告诉我如何将原始分支(非主人)恢复到此提交?
我已经尝试过git push origin master,但它给出了以下错误
! [rejected] branch -> branch (non-fast-forward) error: failed to push some refs to 'git@github.com:xxx/xxx.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.