我一直在监视从每个 sprint 开始的两个分支 -Release和Master.
Master 分支是开发人员创建新分支(特定于任务)、实施他们的更改并创建合并到 Master 的拉取请求的地方。
Release分支是特定于 sprint 的,它始终可以提交给生产。我们只合并提交到发布分支Master并由QA发布分支验证的分支。
这种方法最适合我们,因为我们Release定期提交并实施和验证特定功能,因此我们确切地知道下一个版本会发生什么。
这个问题是avoid-merging-master-into-development-branch 和git-merging-only-branch-specific-commits的延续
在一行中,我想
“确保只有经过 QA 验证的开发分支才能进入下一个候选版本。”
我曾想过使用我之前讨论中的以下工作流程选项;
Run Code Online (Sandbox Code Playgroud)git pull --rebase master taskA //Work on taskA branch, do multiple commits, and also execute this command multiple times whenever required; At time of Rebasing taskA to Master git checkout taskA git rebase -i origin/Master // Remove any commits that are not belongs to taskA. git checkout …
如何在 git 中的合并操作期间解决二进制文件冲突解决方案?这是我到目前为止所做的:
git checkout master
git fetch origin
git merge working_branch
... [Conflicts] ...
git status
...
Unmerged paths:
both modified: Path/file.dll
...
Run Code Online (Sandbox Code Playgroud)
我想保留 中的版本working_branch并丢弃master. 我该怎么做呢?
git binaryfiles git-merge merge-conflict-resolution git-merge-conflict
我有2个遥控器-原产地指向我的叉子和上游到公司回购该点。
$git remote -v
origin https://github.com/me/app.git (fetch)
origin https://github.com/me/app.git (push)
upstream https://github.com/company/app.git (fetch)
upstream https://github.com/company/app.git (push)
Run Code Online (Sandbox Code Playgroud)
我分叉前一个月。我一直在推动原点,然后向上游提出拉取请求。这很好。
现在有人在上游创建了一个名为“3D_Theory”的分支,我想首先将该新分支反映到我的原点,然后从该分支开始工作。但出于某种原因,该分支并没有反映在我的起源中。
我尝试了以下方法:
git remote show origin
>> does not list 3D_Theory
git remote show upstream
>> lists 3D_Theory
Run Code Online (Sandbox Code Playgroud)
我试过:
git fetch upstream
git checkout master
git merge upstream/3D_Theory
Run Code Online (Sandbox Code Playgroud)
但是我仍然没有在我的叉子上创建那个分支。如何在上游获得一个新分支以反映我的分叉?
谢谢
以下类似问题都没有帮助我:
我大约一个月前创建了一个分支。从那时起,主分支进行了大量更新,功能分支不包括这些更新。我希望我的提交位于更新的主分支之上,我只希望我的提交被发布。我该怎么做(或者这甚至可能)?
更多信息:我的本地分支提交已经推送到远程分支,但没有推送到主分支。
我试过了git rebase,但后来我收到一条消息,说我的分支已经发生分歧,“并且分别有 X 和 Y 不同的提交。”
我不确定是否git push -f会解决我的问题。我不希望我的远程分支记录在 master 分支上所做的更改。我只希望我的远程/本地分支“位于”最新版本的 master 之上,并且仍然只显示我的提交。
我不想将 master “合并”到我的分支中,因为 1000 多次提交会使我的提交黯然失色,我希望只有我的提交才能被同行轻松审查。
我正在尝试使用git read-tree.
问题是,合并文件的先前提交历史消失了。我确实逐个文件地检查了文件。
我遵循了基于这篇文章进行子树合并的正常方法:
6.7 Git 工具 - 子树合并
$ git remote add rack_remote git@github.com:schacon/rack.git
$ git fetch rack_remote
$ git checkout -b rack_branch rack_remote/master
$ git read-tree --prefix=rack/ -u rack_branch
Run Code Online (Sandbox Code Playgroud)
我当前的工作区结构如下所示:
project P
- repoA
- repoB
- repoC
(... and many more repos)
Run Code Online (Sandbox Code Playgroud)
我想改变它们的层次结构,就像:
project P
- repoA <=== have repoB and repoC inside.
Run Code Online (Sandbox Code Playgroud)
我无法在上面的示例中看到合并文件的历史记录,也无法在git log结果中看到。
(我想强调我的 repos 是 svn 克隆的,仍然链接到 svn 存储库。这会影响读取树行为吗?)
编辑:我尝试使用原始 Github 存储库,问题是相同的。
我的博士论文有一个 git 存储库(在乳胶中)。大学政策不允许我与我的研究顾问分享我论文的背景审查章节,我可以自由分享其他章节并获得意见。
为了与我的顾问共享存储库,我创建了一个孤立分支 (noRevBranch),其中删除了所需的章节,并将此分支推送并跟踪到 github 上的新存储库。我可以与他分享这一点,而他无法访问已删除的章节,因为这里没有历史记录。
问题是如何将我将来对 master 分支所做的任何更改合并到 noRevBranch 而不将 master 分支历史记录附加到新的合并提交?
如何管理与 xlsx(二进制)的 Git 合并冲突?
它要求解决冲突:
$ git merge
warning: Cannot merge binary files: proj/data/specs.xlsx (HEAD vs.
refs/remotes/origin/master)
Auto-merging proj/data/specs.xlsx
CONFLICT (content): Merge conflict in proj/data/specs.xlsx
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)
我想获取origin/master文件的版本
git add proj/data/specs.xlsx; git commit
Run Code Online (Sandbox Code Playgroud)
它保留了我的本地文件版本。
如果我签出文件,我会收到此错误:
$ git checkout labor_um/data/UM_specs.xlsx
error: path 'labor_um/data/UM_specs.xlsx' is unmerged
Run Code Online (Sandbox Code Playgroud) 有没有办法使用远程分支在暂存/未暂存更改之间执行 git diff,例如 origin/branch1。git difftool 是否有类似的选项?
或者
有没有办法用 git 远程分支来区分我的本地文件系统(忘记暂存或未暂存)中的更改?我想要的只是在提交之前检查我的更改。一旦我完成了更改并解决了与远程分支的冲突,这真的很有用。
如果两个人在 github 上的同一个存储库和同一个分支 master 上工作。然后说 A 将他们的更改推送给 master,而我作为 B,我如何在调用后检查更改的文件git fetch?
如果我做:
git fetch
git merge master origin/master
Run Code Online (Sandbox Code Playgroud)
我得到这一行:
aa@DESKTOP-KQQ0A3T MINGW64 ~/..
$ git merge master origin/master
Merge made by the 'recursive' strategy.
src/main.js | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
Run Code Online (Sandbox Code Playgroud)
我喜欢src/main.js以这种方式描述差异的方式,但该信息仅在我合并时出现,所以我的问题是,在进行合并之前,我应该使用什么命令来查看有关差异的相同信息?
我要做的是确保我可以安全地删除本地分支。
我在这里找到了这个问题的一些很好的答案:
我如何在 git 中知道一个分支是否已经合并到 master 中?
所以我们有源分支和目标分支。源分支可能已经或可能没有完全合并到目标分支中。
上面链接中的答案的问题是,如果目标分支在与源分支合并后有新的提交,答案似乎不起作用。
我有一个运行良好的脚本,但它似乎只有在所有分支共享相同的提示或其他任何内容时才有效。但是,该脚本在理论上是有效的,因为您只是想查看本地分支的提示是否作为提交包含在远程分支历史记录中的某个位置,所以应该不难弄清楚。
#!/usr/bin/env bash
green='\033[1;32m'
red='\e[31m'
no_color='\033[0m'
branch="${1:-HEAD}"
branch_name=`git rev-parse --abbrev-ref $branch`;
git fetch origin dev;
git fetch origin master;
merge_base="$(git merge-base $branch origin/dev)"
merge_source_current_commit="$(git rev-parse $branch)"
if [ "$merge_base" != "$merge_source_current_commit" ]; then
echo -e "${red}Branch with name '$branch_name' is not completely merged with origin/dev.${no_color}";
exit 1;
else
echo -e "${green}Branch with name '$branch_name' is merged with origin/dev, now checking against origin/master${no_color}";
fi
merge_base="$(git merge-base $branch origin/master)"
if [ "$merge_base" != …Run Code Online (Sandbox Code Playgroud) git ×10
git-merge ×10
git-rebase ×2
binaryfiles ×1
git-checkout ×1
git-difftool ×1
git-fetch ×1
git-fork ×1
github ×1
merge ×1
merge-base ×1
rebase ×1
svn ×1