让我们说你在master,并做git checkout -B bugfix/user-profiles-nonexistent.现在有什么方法可以找出你的分支master,或者Git不跟踪它吗?
我有一个B基于分支的分支master,我想改用B分支A。
我的问题是分支A是基于关闭较早的承诺master比B,所以当我尝试和重订B到A它把所有提交的历史master,因为A是从它分裂。
通常我会通过交互式 rebase 来解决这个问题并手动删除不需要的提交,但是在这种情况下,以这种方式处理的提交太多。我要的是一个命令,让我放弃分支所有提交B它与最后的共同祖先之间A和尖端master。
IE。从分支删除下图中的提交 2-5 的命令B
* 099b4f7 (HEAD -> master) commit_6
| * a4b6a50 (B) some other commit
|/
* 80cfbbc commit_5
* 49c40c9 commit_4
* 2923714 commit_3
* f78ee3c commit_2
| * f6d3601 (A) some commit
|/
* df753e1 commit_1
Run Code Online (Sandbox Code Playgroud) 我正在开发一项功能,并将所有更改合并到我们的测试基础设施团队提供的特定修补程序分支。该分支已合并到我们的发布分支中,没有冲突。后来,当测试基础设施团队尝试将发布分支合并回其他修补程序分支时,他们看到了很多合并冲突。
我的问题是,如果我是唯一处理这些文件的人,那么是什么导致了这些冲突。
而且,当我尝试在本地合并release分支和hotfix分支时,我还看到很多由于别人代码更改而导致的冲突。那么手动挑选我对修补程序分支的所有提交是解决此问题的唯一方法吗?
感谢你的帮助!
当我尝试将分支合并到 master 时,我预计会发生合并冲突。这两个分支都有一个文本文件,其中包含不同的文本。
# make project directory
mkdir projA
cd projA
# initialize git repo
git init
# make commit in master branch
echo "text 1" > fileA.txt
git add .
git commit -m "commit A"
# make commit in a new branch
git checkout -b branch1
echo "text 2" > fileA.txt
git add .
git commit -m "commit B"
# merge branch into master
git checkout master
git merge branch1
Run Code Online (Sandbox Code Playgroud)
但合并命令只是进行快进合并,并保留 brach1 的 txt 文件中存在的文本,而不是 master 分支中的文本。
有人可以向我解释一下为什么 git …