标签: git-branch

git-flow 在远程 git 服务器上推送未就绪的功能

我使用 git flow 方法,并且需要有关如何在远程 git 服务器上推送未就绪功能的建议。

默认情况下我们可以这样做(如果功能已经完成)

git checkout -b feature develop
Do something...
git commit -am "Message"
git checkout develop
git merge --no-ff feature
git push origin develop
git push origin feature
Run Code Online (Sandbox Code Playgroud)

如果我的功能尚未准备好,但我想将其推送到远程服务器上怎么办?

我尝试这样做:

 git checkout -b feature develop
 Do something...
 git commit -am "Message"
 git push origin feature
Run Code Online (Sandbox Code Playgroud)

但如果我看一下提交的图形方案,似乎开发和功能是同一个分支(但当然它们不一样)。

git git-workflow git-flow git-branch

1
推荐指数
1
解决办法
5351
查看次数

如何获取类似 git-branch -avv 的标签列表?

git branch -avv显示所有分支(包括远程分支),用跟踪分支、短 SHA 和提交标题装饰它们。是否有类似的命令来显示所有标签及其指向的提交,可选地包括是否将其推送到上游,以及如果标签被注释的话还包含消息?

到目前为止我能得到的最好的结果是:

git tag --format '%(color:green)%(refname:short)%09%(color:white)%(objectname:short) %(contents:subject)'
Run Code Online (Sandbox Code Playgroud)

但这有几个问题:

  • 根据标签长度,通过%09(a \t) 的对齐失败
  • 无法查看标签是否是轻量级的(%(objecttype)将其显示为 或committag但我更喜欢下一行的标签注释之类的内容)
  • %(objectname:short)结果是带注释标签的标签SHA,而我想知道它们指向什么。

最后两个归结为基本上想要git show-refs --tags -d显示什么,但这并没有提供--format

git git-tag git-branch

1
推荐指数
1
解决办法
1165
查看次数

Git 合并 - 同时合并 2 个分支会发生什么

我对 git 上的合并有不清楚的理解,我想正确理解。

假设我在 master 分支上有一个文件 F,它已经有 100 个 LOC。我从 master 创建了一个分支 A,并编写了 50 个 LOC,从第 101 行开始到第 150 行。我创建了一个合并请求,将分支 A 合并到 master。因此,如果分支 A 将被合并,那么 master 上的文件 F 将有 150 LOC

假设分支 A 尚未合并到 master,仍在等待。我从 master 创建了一个新的分支 B。我还写了 50 LOC,也是从第 101 行到第 150 行开始(因为分支 A 尚未合并)。我还为分支B创建了一个MR

如果 2 个人审阅 2 份 MR,将会发生什么情况,并且:

  1. 他们同时合并2个MR?master会不会有冲突,因为两个分支都想合并到第101行到第150行?

  2. 如果分支A先合并,则意味着master已经有150个LOC,但分支B仍然从第101行到第150行开始,因为它是在master还有100个LOC时创建的。B合并的时候会不会也有冲突?或者说 Git 是如何处理这些的?

提前致谢(我不是巨魔,只是想弄清楚一些东西,以防有人要标记这个问题)

git merge branch git-branch gitlab

1
推荐指数
1
解决办法
3102
查看次数

当远程存在时,“checkout”和“checkout -b”之间的区别?

如果我有一个远程分支,我可以在本地执行git checkout MyRemoteBranch并且它会正常工作。我所说的工作正常是指它将创建一个名为 MyRemoteBranch 的本地分支并切换到它,并且该本地分支将跟踪远程分支。

那么这种情况下,什么时候需要传递-b参数呢?当遥控器存在时,以下有什么区别:

git checkout MyRemoteBranch
Run Code Online (Sandbox Code Playgroud)

VS

git checkout -b MyRemoteBranch
Run Code Online (Sandbox Code Playgroud)

git git-checkout git-branch

1
推荐指数
1
解决办法
7213
查看次数

Git 中的主干和分支有什么区别?

因此,我试图寻找答案,但我发现的只是不同的版本控制方案,而不是区别。

git version-control git-branch

1
推荐指数
2
解决办法
4296
查看次数

同一提交中的多个分支

我有一个包含多个(不需要的)分支的提交,通过 git log --graph 我得到了这个:

commit 417bb7dfd7d7230fd1c859414d2aa231e72e24e6 (HEAD -> Feature1, master, Feature2)
Run Code Online (Sandbox Code Playgroud)

如何将Feature1、Feature2分支从提交417bb7dfd7d7230fd1c859414d2aa231e72e24e6移动到不同的提交?

感谢您的帮助。

git git-log git-branch

1
推荐指数
1
解决办法
1175
查看次数

在新的 Git 分支中创建新文件

我仍在尝试使用 Git。

现在我在 Gitlab 上只有一个本地master分支和一个远程origin/master分支。

到目前为止我一直在做什么:

  • 编写新的代码master
  • 跑步git commit -m "added something new"
  • 跑步git push origin master

我想创建一个新分支,所以我这样做了:

  • git checkout -b newBranch

执行此命令后,我已经在我的新分支上“签出”了,对吧?我可以确认这一点git branch -a

所以我创建了一个新文件(使用 VSCode 文件资源管理器)example.txt(在我的新分支上)。

然后我做了:

  • git checkout master

这样我就可以回到我的master分行了。

那时我预计我将不再能够看到该文件,因为它是使用不同的分支创建的。但该文件仍然存在。

我缺少什么?

git git-branch

1
推荐指数
1
解决办法
1万
查看次数

从分离的头创建分支后出现奇怪的分支名称

我的 Git 中出现了一个分离头的问题。我对之前的提交进行了检查。之后,我们做出了承诺。所以在我为此提交创建分支之后。

git checkout -b detached-head-after-gitlab-crush

所以在那之后,我做出了改变并承诺了改变。

但现在,当我写下git branch

* (detached from a71c5ea)
  detached-head-after-gitlab-crush
  master
Run Code Online (Sandbox Code Playgroud)

所以我想了解当前分支是什么以及它是如何创建的。

我如何对最后一个分支进行更改,而且我无法将当前分支推送到原点。

git log --all --decorate --oneline --graph

显示以下结果:

* 548af67 (HEAD) Images were changed, and issue with Printing Gate entry records
* be89a73 (origin/detached-head-after-gitlab-crush, detached-head-after-gitlab-c
* 6979cba Files before solving HEAD detached problem
* fb89a62 Rules added, made some changes which I don't remember
| *   d4183f3 (origin/master, origin/HEAD, master) Merged files
| |\
|/ /
| *   3c3cadc Merge branch …
Run Code Online (Sandbox Code Playgroud)

git git-branch git-detached-head

1
推荐指数
1
解决办法
648
查看次数

Git 从 master 以外的不同分支拉取远程

我想从 master 之外的不同分支中提取代码,即有两个分支 master 和 dummy,master 分支是在 dummy 分支之前的一些提交,而 dummy 包含一些不在 master 分支中的提交,那么我如何提取这两个分支本地分支与不同的提交一样。

我尝试首先创建虚拟分支并从远程拉取该分支,但随后它包含来自主分支的提交

git clone repolink

git checkout -b dummy

git pull upstream dummy

我知道除了 master 之外还可以使用不同的分支进行克隆

git clone --branch dummybranch --single-branch repolink

有什么方法可以在单个本地存储库中包含具有不同提交的两个分支吗?

git git-pull git-push git-branch

1
推荐指数
1
解决办法
8596
查看次数

使用 git,如何从另一个分支中的文件强制覆盖一个分支中的文件(绕过合并)并提交?

我在一个名为“生产”的分支中有一个文件,我希望被另一个名为“ sqa ”的分支中的特定文件覆盖。

该文件的本质是它不是有多个贡献者的代码。

什么命令可以做到这一点?(两个分支都不是主分支) - 一个分支称为“生产”,另一个分支称为“ sqa ”。


分支“ sqa ”中的文件我想进入分支“生产”并在运行命令后使它们相同,避免任何潜在的合并冲突(强制覆盖,强制接受“sqa”中的文件)/sqa/file => /production/file

如果这是可能的,并且如果有人实际上做到了这一点并测试了这一点,那么我们将非常感激(仅适用于单个文件,而不是多个文件或整个分支合并)。

如果文件存在于分支“ sqa ”中但不存在于“生产”中,则命令的工作方式是否相同(将其复制到那里?)

git git-merge git-branch

1
推荐指数
1
解决办法
487
查看次数