场景:我已经分叉了一个github项目并开始研究它(在将原始项目添加为名为'upstream'的远程项目之后).在我的fork上工作时,向上游项目发布了许多版本:v1.3-stable,v1.4-stable,v1.5-experimental等.现在我需要在上游提交中合并到我的主分支,但仅限于特定版本,例如,发布v1.4-stable.这种情况的最佳工作流程是什么?
新手开源贡献者在这里。
我在 GitLab 上创建了TortoiseGit 存储库,然后将其克隆到我的计算机上,编辑了一个文件,并提交到了 branch master。
几天过去了,我想用上游的最新更改更新我的本地工作副本,然后再推送到我的远程分支并打开合并请求(当然还有更多的开发/测试等)。
我upstream在我的 repo 中添加了一个远程调用,现在我不确定推荐的操作是什么:
git pull从upstream/master到我签出的分支mastergit pull --rebase //git fetch其次是git rebase。这些是我在研究过程中发现的方法。不幸的是,在 GitHub、GitLab 甚至像 Linux 内核这样的项目中工作时,我无法找到对每一个的全面审查,也没有关于哪一个是典型实践的建议。
我尝试了方法 1 和 3。方法 1 ( pull) 生成合并提交(--ff-only不可能),并且我的历史在某种程度上被污染了。这也会造成冲突。方法 3 ( rebase) 两者都没有,但我不确定rebase提交被推送到远程后的行为方式,所以我担心它可能会导致未来出现问题。
所以这是我的问题。
谢谢你。
在我的分叉存储库中,我设置了一个remote originand remote upstream(原始存储库)。
git status 与原点比较。
我如何比较upstream?
谢谢
我正在搜索git命令以了解与现有分支(如果有)关联的上游。
(某种与“ write”命令相关联的“ read”命令git branch --set-upstream-to=...)
,原因是我使用了一个分支,该分支与多个远程存储库连接,并且我想在更改分支之前检查该分支是否已经与右上游连接。
我正在阅读这篇文章,在大多数情况下,我明白了。我想我了解变基(它获得更线性的 git 日志历史记录,而无需进行仅三向提交的提交)我也认为我了解 git 图表。但是段落中有几句话我不明白。
您会注意到该合并中的短语“快进”。因为您合并的分支所指向的提交直接 位于您所在的提交的上游,所以 Git 只是将指针向前移动。换句话说,当您尝试将一个提交与可以通过跟踪第一个提交的历史记录来访问的提交合并时,Git 通过向前移动指针来简化事情,因为没有不同的工作可以合并在一起 – 这称为“快进。”
您的更改现在位于 master 分支指向的提交的快照中,您可以部署修复程序。
我不明白的是上游,指针和最后一句话的术语。
图中的红色主框为什么是hotfix上面的?
由于这个git(或github?)特性,我要去香蕉 - 我已经创建了一个新的分支,但是我无法将它推送到github上的上游回购.这不是我推动这个回购的第一个分支,到目前为止一切顺利.
我创建了一个新的分支:
$ git checkout -b adam/no-push-bugfix
Run Code Online (Sandbox Code Playgroud)
对文件进行了一些更改,并添加了一些(这意味着某些更改未提交):
$ git add --patch path/to/some/file
Run Code Online (Sandbox Code Playgroud)
确保更改是正确的:
$ git diff --staged
$ git commit -v
$ git status
Run Code Online (Sandbox Code Playgroud)
并试图推动:
$ git push --set-upstream origin adam/no-push-bugfix
$ fatal: adam/whatever-name-bugfix cannot be resolved to branch.
Run Code Online (Sandbox Code Playgroud)
知道为什么我的新分支从上游被拒绝了?
自从我开始使用功能分支以来,我可以询问差异:
git diff upstream-branch...
Run Code Online (Sandbox Code Playgroud)
但它要求我知道上游分支是什么。是否有上游分支的参考,无论它是什么,而我事先不知道或必须挖掘它?就像,我不知道:
git diff UPSTREAM...
Run Code Online (Sandbox Code Playgroud)