假设我有这种情况,是branch1从master. 经过几次提交后branch1,我还创建了另一个分支,称为branch2. 此后,其他人在 中犯了 (D) 罪master。现在我想branch1用master. 但是既然branch2的branch1哈希值已经被重写并且现在branch2丢失了呢?
master: A - B - C - D
\
branch1: E - F
\
branch2: G - H
Run Code Online (Sandbox Code Playgroud)
在 master 之上对分支 1 进行变基后,分支 2 就会丢失,因为变基重写了分支 1 的哈希值。
master: A - B - C - D
\
branch1: E - F
branch2: G - H
Run Code Online (Sandbox Code Playgroud)
在这种情况下,是否有正确的方法可以在branch1之上再次使用git rebasebranch2?
我们正在考虑在新项目中使用git的两种方法:
开发人员向维护者发送补丁(可能最终会成为开发人员之一),他会使用补丁,测试和集成
开发人员将他们的提交推送到公共"开发人员"分支(项目的每个子模块的分支),维护者获取有关推送的邮件通知,并且可以审查\ test\integrate.
最终结果是相同的 - 包含开发人员提交的基于最新的分支.
所以 - 我的问题是,哪个更好?我应该在一个小组中使用非开源项目开发人员吗?(听起来很奇怪,我发送补丁邮件给那个坐在我旁边的人)
我们在开发环境中有以下源代码控制结构:一个Main分支,它是所有分支的根,以及一个Development分支,它是Main的子代.现在,我最近在Main分支上进行了"重命名",现在它被称为OldMain,之后创建了一个来自Development的新分支,我称之为Main.
完成这些操作后,我意识到它有一些奇怪的行为:OldMain分支丢失了他的历史记录,无法修复,New Main分支"抓住"了同名旧分支的历史记录,使得不一致,因为现在主分支中的代码包含了假历史...
我应该事先检查一下这些操作的预防措施(不知道tfs 2010中的重命名操作实际上是分支+删除),但现在我需要知道如何解决这种不一致问题.
如果我尝试恢复这两个操作(恢复变更集)和签到,我是否会完全丢失原始Main的历史记录?
我需要一些关于该怎么做的建议.
提前致谢.
我刚刚开始学习git版本控制,我正面临着这个问题.鉴于以下分支结构(取自免费书籍):

我们假设C4/C5提交改变了index.html文件的相同部分.
git checkout master
git merge iss53
Run Code Online (Sandbox Code Playgroud)
如果我理解它,我需要手动解决冲突.这本书讲述了冲突文件.这个冲突文件在哪里?鉴于以下冲突,如何:
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53:index.html
Run Code Online (Sandbox Code Playgroud)
我可以丢弃HEAD的所有更改,仅将"iss53"分支的更改合并为"master"吗?如何编辑这些行?
实现git分支模型如下图
http://nvie.com/posts/a-successful-git-branching-model/
但是在这些步骤之后,我的分支 develop 和 master 出现了分歧
第 1 步:将 release 合并到 master 中(没有快进)
第 2 步:将发布合并到开发中(没有快进)
由于第 1 步的合并提交不适用于第 2 步,因此 develop 和 master 出现分歧。
如何确保开发和掌握不会出现分歧。?
我试图了解如何在Git中创建映射到我的开发过程的目录结构.
顺便说一句,我是Git的新手,但不是源代码控制.
我使用GitLab作为我的存储库管理器.
我已将我的存储库添加到GitLab并成功克隆了存储库.
我想要创建的开发过程如下:
主人| 完成| QA | INT
每当有人克隆存储库时,他们将自动看到这个分支结构并将在int分支上工作.
我已经尝试运行命令,认为它会创建结构,但它不会出现(也许我错了).
git checkout -b Done master
git checkout -b QA Done
git checkout -b INT QA
git branch
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Done * INT QA master
无论如何,我假设我错过了一些简单的东西(希望如此).
有没有人对如何设置这个简单的分支层次结构有任何见解?
谢谢
我有该文件的三个版本:
version 1 common ancestor version 2
------------- --------------- -------------
before original line original line
original line after
Run Code Online (Sandbox Code Playgroud)
比较这些版本以生成最终合并版本时会发生什么?
我已经阅读了一些关于这个主题的信息,但我仍然很困惑它到底是如何工作的。
至于后一个例子:
比较版本之间的单行是否为线性?如果是这样,则最终合并应如下所示:
1 line: before
2 line: conflict (both left and right contributors are changed compared to ancestor)
Run Code Online (Sandbox Code Playgroud)
这是正确的理解还是工作方式不同?
我有一个开发分支,在它准备好之前我不小心将其合并到了 Master 分支中。
由于我错误地执行了此操作,因此我决定恢复 Master 中的更改,以便我的任何更改都不会发生在那里。此过程创建了一个恢复提交,从主服务器中删除了我的更改。
一切都很好我以为...
一周过去了,我几乎准备好将我的分支合并回 Master 中。由于还有其他开发人员在其他分支上工作,我决定通过将 Master 中的任何新更改合并回我的分支来更新我的开发分支。
这个过程似乎删除了我所有的工作。
回顾一下Master刚刚传来的历史,它包含了意外提交和恢复提交。这意味着每当我从 Master 更新我的分支时,恢复提交都会删除我的大部分工作。
如何将 master 中的更改合并回我的分支,但不包括恢复提交?
我能想到的唯一的两种可能性是:
我希望有一种更好的自动化方法来做到这一点(我希望进行某种合并但忽略某些提交过程)。
git merge git-merge branching-and-merging merge-conflict-resolution
我的应用程序需要更改配置文件中的版本号。如果我遵循 GIT Flow 分支方式,那么理想情况下我应该更改该文件的哪个分支?它是在我们创建发布分支之前开发,还是在发布分支中(然后更新回开发)?
每次我在 github 上创建存储库并推送我的文件时,它都会创建两个分支,主分支和主分支。所有更改都转到主分支,当我转到“比较和拉取请求”时,它说没有什么可比较的,因此无法推送到主分支。
这些是我采取的步骤: 转到 github,创建一个存储库。转到我的文件夹并运行git init, git add ., git commit -m "first commit", git remote add origin my@repository,git push -u origin master
现在我知道了,我需要创建一个主分支,所以我也运行git checkout -b main它运行成功,但是当我运行git push --set-upstream origin main它时会抛出一个错误:
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'git@github.com:myuser/myrepo.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 …Run Code Online (Sandbox Code Playgroud) 嗨,我有两个并行的“dev”和“prod”分支,我想将另一个本地分支添加到名为“issue22”的本地开发分支(GitPro 将此称为主题分支 - 其他人称之为功能分支)。所以在终端我创建了我的功能/主题分支
git checkout -b issue22 dev
Run Code Online (Sandbox Code Playgroud)
我认为这会“创建一个名为 issue22 的分支”,并从 dev 分支中的相同源代码开始。我期待看到
prod
dev
dev/issue22
Run Code Online (Sandbox Code Playgroud)
但是当我发送命令 git branch -a
相反,我看到
prod
dev
issue22
remotes/origin/head -> origin/master
remotes/origin/dev
remotes/origin/prod
Run Code Online (Sandbox Code Playgroud)
我应该使用什么命令来创建一个新分支,以便“issue22”看起来像一个与“dev”分支并行运行的主题/功能分支,并且似乎也源于 dev 分支?
非常感谢