随着git rebase --interactive <commit>你能够压制任意数量的提交连成一个单一的一个.
除非你想将提交压缩到初始提交中,否则这一切都很棒.这似乎是不可能的.
有没有办法实现它?
在一个相关的问题中,我设法提出了一种不同的方法来解决第一次提交的问题,这也就是说,它是第二次提交.
如果您有兴趣:git:如何插入提交作为第一个,转移所有其他?
我可以看到为什么分布式源代码控制系统(像Mercurial这样的DVCS)对开源项目有意义.
但它们对企业有意义吗?(通过集中的源控制系统,如TFS)
DVCS的哪些特性使其更适合或更适合具有许多开发人员的企业?(通过集中式系统)
在我们的项目(在GitHub上托管)中,有人不小心每次都强行推动主人.没有人知道是否这样做,我想知道是谁做的,以及它背后有什么样的错误配置工具或坏习惯.
所以问题是,如何识别推动力量的用户?我拉的时候看到这样的东西:
# git pull --prune
(.....)
+ 4c0d44c...138b9ed master -> origin/master (forced update)
Run Code Online (Sandbox Code Playgroud)
但138b9ed它只是源头/主人的最新提交,并且任何人都可能在强制推动后做出承诺; 甚至可能是推力器本人没有做出任何改变,只是重新定位,所以他的名字甚至不存在于作为作者的原始/主人历史的重写部分.
我也尝试了git reflog origin/master,但它只是提供了相同的信息:有一条记录说明git pull --prune (forced update)了提交ID 138b9ed,但是这将再次将最后一个提交者提供给master,而不是那个强制推送的提交者.git reflog master在原始服务器上运行可能会有所帮助,但GitHub并没有为您提供那种访问AFAIK.
有没有可靠的方法来找出推动起源的人(何时)?
我想知道强制推动和正常推动之间有什么不同,在什么样的情况下我应该强制推入git?强制推入主分支是一个好习惯吗?
这些是我执行的一系列步骤:
dc9afg2k)git fetch origin master && git merge origin mastergit checkout master git pull (这拉动了所有最近的变化)git fetch origin master && git merge origin mastergit reset --hard origin/mastergit checkout branch git blog
git reset --hard dc9afg2k (提交成功) git checkout mastergit log (这回到了2天前).git pull(master不是用当前更新origin/master).我用了
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.
昨天,我们团队的一名成员对git push --forceBitbucket 存储库进行了内部检查。我知道是谁,但我想知道是否可以收集哪些提交被强制推送到存储库中。
我从 git log/history 中寻找的信息是这样的 -
+ 1951097...9b070f0 tower -> origin/tower (forced update)
当我尝试拉入本地分支并在强制推送后遇到合并冲突时,我看到了此消息,但除了那一次之外,我在其他任何地方都无法看到它。是否有一个地方可以看到所有提交(特别是(forced update)旁边带有该标签的提交?)正在运行Git reflog并且git log似乎没有返回此信息。
我看到这篇文章(很搞笑)类似 - How can I find out who force Push in git?
我不是寻找特定的人(就像上一个问题中的提问者),而是寻找在本地克隆后使用 --force 推送到存储库中的提交。这些信息是否可以收集,或者我运气不好?
谢谢。
当我克隆一个远程存储库时
git clone 'repo_url'git pullgit status我收到这条消息 -
On branch master
Your branch and 'origin/master' have diverged,
and have 41 and 20 different commits each, respectively
Run Code Online (Sandbox Code Playgroud)
当我使用时,git pull -a我没有这个问题.
远程仓库上的东西是不同步的吗?与HEAD和主人?我如何解决它?
编辑1:
当我运行git branch -a:这就是它的样子......
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/clothes
remotes/origin/dunnesBranch
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
编辑2:
在我看来,origin/master并没有指向最新的代码......然后我运行'git clone'然后运行
git reset --hard origin/master
'git pull'并尝试合并因冲突而失败...
我想......远程仓库的HEAD指向最新的提交,origin/master指向另一个不同的旧提交...我可以在运行git show时验证这一点...
我只是从Git开始,我有一些东西,我需要扭转到以前的提交.我可以在本地做这个没问题.
git reset --hard hashcode(或使用sourcetree)
然而,当我尝试推送到bitbucket时,souretree给了我一个错误,直到我拉下先前的提交,然后我回到了我开始无法恢复到之前的commit.l
如何在本地恢复到先前的提交,然后推送到bitbucket覆盖并删除在我恢复到之后的所有提交?
错误消息是:
git -c diff.mnemonicprefix=false -c core.quotepath=false push -v --tags origin Development:Development
Pushing to git@bitbucket.org:Username/project.git
To git@bitbucket.org:Username/project.git
! [rejected] Development -> Development (non-fast-forward)
error: failed to push some refs to 'git@bitbucket.org:Username/project.git'
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)