为什么在 git rebase 之后应该做:“git add changedfile”?
我的问题的更多解释:
添加命令获取文件到暂存不提交他
git rebase --continue 在做什么?
谢谢
在一个新的项目中,我们开始直接在master上提交一个新的git团队.我们不小心对主人做了一些不好的提交,这些提交被推到了一个中央回购并被整个团队拉下来.
实现我们的错误,我们就创建了一个特性分支关闭之前提交坏提交.我们的团队现在很乐意在功能部门工作.
我们现在希望我们的主分支包含功能分支中的确切代码,而不重新引入错误提交.
我看到该merge theirs选项已从更高版本的git中删除.那么丢弃糟糕提交并使我们的主人看起来与我们的功能分支完全相同的最佳方法是什么?
我试图通过rebase/cherry-pick删除最后两次提交.调用后git rebase HEAD^^^ -i,我只留下必要的承诺(把一切都达到HEAD^^,所以我下降HEAD^和HEAD).
在git push我看到以下内容之后:
! [rejected] dev -> dev (non-fast-forward)
error: failed to push some refs to 'git@bitbucket.org:XXXXXX/YYYYYYYYY.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)
但git pull只是快速前锋和前HEAD提交.所以,我最终得到了我的开始.我究竟做错了什么?
问题是:我有一个项目,我通过 netbeans 连接到我的实时 git 存储库,并进行了提交。然后我试着拉代码,我收到一条消息,我是想和master合并还是我想rebase,我不小心rebase了。现在我的本地项目中没有初始化任何 git repo(从 USB 复制代码)。Rebase 初始化了一个 git repo 的副本。这个动作发生的事情真的很烦人。我在当前目录中所做的所有更改都被删除的文件也被删除了,我已经恢复了被删除的文件。但是我仍然无法回到rebase之前的状态(即新鲜状态)。任何帮助都会非常有帮助。
我不小心添加、提交并将我所有未跟踪的文件推送到远程存储库,在那里它们会令我的合作者烦恼。
从那以后,我还进行了另外两次提交,其中一次是通过 git pull 与远程合并。
我想撤消这一系列操作并将我的目录恢复到以前的状态(包括未跟踪的文件)。
使用我尝试过的所有命令(签出、还原、重置、变基),我的未跟踪文件由于撤消提交而丢失。
我该怎么办?
当我想使用添加到 bitbucket 中的提交来更新我的代码时,我所做的就是签出分支 A。从原点获取代码。并将来自 origin/A 的更改变基到 A 之上。在这种情况下,它不会使用不同的哈希值创建新的提交。它重复我们在 Bitbucket 上拥有的相同哈希值。但我们都知道,变基会删除该特定分支上的所有提交,并在我们当前的提交之上添加相同的内容提交。那么为什么我们没有不同的 SHA-1 呢?
是否存在任何常见的git使用错误,或者通常是否存在任何原因导致如果这些冲突在之前的rebase中得到解决,那么rebase会重复前一个rebase的冲突?
此外,rebase是否优先考虑如何解决冲突?例如,rebase是否希望在代码中通常的git冲突括号中的两个可能的代码片段之间进行严格的选择,或者只是为了去除它之间的所有内容>>>,<<<?我很好奇,如果删除两个代码选择来解决冲突会影响rebase正确解决以后冲突的能力.
进一步阐述:我有一个master分支和一个dev分支.该dev分支我一直就在身边一段时间,所以不同的提交数量的增加相当大的,在100秒(我知道...应该dev到master更多的时候). dev分支本身有几个较小的特征分支从它切割,然后合并回来,只有被剪切,重新定位,与dev分支合并,永远不会master分支(我记得).我dev在master1周前将分支重新分支到分支机构.我已经在dev分支上做了一些更改,并希望master再次进行重新设置,以便我可以准备合并.master在1周的窗口中,分支的变化非常小,但代码文件不重叠.然而,当重订dev上master我看到了相同的一组矛盾的混帐升起时,我试图在当前变基相比,当我重订一周前为.
谢谢!
这个项目只有一个master分支,所以所有的工作都在那里完成。
我错误地犯了一个错字,虽然我可以提交撤消,但我想我会尝试完全删除提交。
提交哈希是dbcbf96b,并且ded82215是它之前的提交。因此,根据这些说明,我这样做了:
git rebase -i ded82215这在编辑器中显示了“待办事项”列表,如预期的那样,仅包含以下内容:
pick dbcbf96 Writer update.
Run Code Online (Sandbox Code Playgroud)大概是按照该生成文件的注释中的说明,我将该行更改为:
drop dbcbf96 Writer update.
Run Code Online (Sandbox Code Playgroud)我保存了文件并关闭了编辑器。然后它说:
Successfully rebased and updated refs/heads/master.
Run Code Online (Sandbox Code Playgroud)然后我检查了 GitLab(我用来托管它的东西)希望看到提交消失了,但事实并非如此,它仍然存在。
我确实git status查看了它推荐的操作并产生了:
On branch master
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)这有点道理,但至于变基,我不确定发生了什么。现在我确实git pull更新了本地存储库,但一切都刚刚回到我开始dbcbf96b的地方,回到本地文件仍然包含更改,本地存储库是最新的,并且 GitLab 仍然显示修订版。该pull命令产生:
Updating ded8221..dbcbf96
Run Code Online (Sandbox Code Playgroud)所以我的 rebase …
我有
G---H---I---J Develop
/
A---B---C---D---E---F Master
Run Code Online (Sandbox Code Playgroud)
我想与master一起rebase Develop,所以:
G---H---I---J Develop
/
A---B---C---D---E---F Master
Run Code Online (Sandbox Code Playgroud)
所以如果我这样做git checkout develop & git rebase master
但是,它会执行变基操作,在每次提交时发现合并冲突,它将停止。
我很高兴能从开发中获取所有内容并用它覆盖。开发方面发生了巨大的变化,但每次提交都会构建并通过所有测试,因此我可以假设,如果我只是覆盖 master 中的所有内容,应该没问题。
那么我该怎么说git rebase master --choose develop side
我正在寻找一种方法,使 git对特定文件使用特定的合并策略(我们的/他们的) ,具体取决于我是合并还是重新调整我的功能分支。
让我解释一下:假设我有一个功能分支“fb”,其中更改了文件“.mvn/maven.config”。如果我将 master 合并到“fb”中,我想保留我的文件,因此使用“我们的”策略(我可以在 .gitattributes 文件中定义它)。但是,如果我将“fb”重新设置为 master(而不是合并),我仍然想保留“fb”分支的“.mvn/maven.config”,所以我应该使用“他们的”策略,因为据我了解,merge 和 rebase 之间策略的含义是相反的。
问题是:有没有一种简单的方法来定义智能合并策略?
我已经看到了“git merge driver”的概念,但据我所知,合并驱动程序无法判断它是合并还是变基,因此无法推断是否使用我们的 VS 他们的。
我是否必须告诉我的队友没有解决方案,迫使他们每次都小心谨慎,手动手动选择合适的策略?
注意:我添加了“maven”标签,因为任何使用 git 和 maven 的人在保留 .mvn/maven.config 文件时可能会遇到同样的问题
git ×10
git-rebase ×10
git-merge ×2
git-reset ×2
rebase ×2
cherry-pick ×1
git-revert ×1
github ×1
maven ×1
merge ×1
netbeans ×1
undo ×1