我使用 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 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)将其显示为 或commit,tag但我更喜欢下一行的标签注释之类的内容)%(objectname:short)结果是带注释标签的标签SHA,而我想知道它们指向什么。最后两个归结为基本上想要git show-refs --tags -d显示什么,但这并没有提供--format。
我对 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,将会发生什么情况,并且:
他们同时合并2个MR?master会不会有冲突,因为两个分支都想合并到第101行到第150行?
如果分支A先合并,则意味着master已经有150个LOC,但分支B仍然从第101行到第150行开始,因为它是在master还有100个LOC时创建的。B合并的时候会不会也有冲突?或者说 Git 是如何处理这些的?
提前致谢(我不是巨魔,只是想弄清楚一些东西,以防有人要标记这个问题)
如果我有一个远程分支,我可以在本地执行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 log --graph 我得到了这个:
commit 417bb7dfd7d7230fd1c859414d2aa231e72e24e6 (HEAD -> Feature1, master, Feature2)
Run Code Online (Sandbox Code Playgroud)
如何将Feature1、Feature2分支从提交417bb7dfd7d7230fd1c859414d2aa231e72e24e6移动到不同的提交?
感谢您的帮助。
我仍在尝试使用 Git。
现在我在 Gitlab 上只有一个本地master分支和一个远程origin/master分支。
到目前为止我一直在做什么:
mastergit 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 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) 我想从 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
有什么方法可以在单个本地存储库中包含具有不同提交的两个分支吗?
我在一个名为“生产”的分支中有一个文件,我希望被另一个名为“ sqa ”的分支中的特定文件覆盖。
该文件的本质是它不是有多个贡献者的代码。
什么命令可以做到这一点?(两个分支都不是主分支) - 一个分支称为“生产”,另一个分支称为“ sqa ”。
分支“ sqa ”中的文件我想进入分支“生产”并在运行命令后使它们相同,避免任何潜在的合并冲突(强制覆盖,强制接受“sqa”中的文件)/sqa/file => /production/file。
如果这是可能的,并且如果有人实际上做到了这一点并测试了这一点,那么我们将非常感激(仅适用于单个文件,而不是多个文件或整个分支合并)。
如果文件存在于分支“ sqa ”中但不存在于“生产”中,则命令的工作方式是否相同(将其复制到那里?)
git ×10
git-branch ×10
branch ×1
git-checkout ×1
git-flow ×1
git-log ×1
git-merge ×1
git-pull ×1
git-push ×1
git-tag ×1
git-workflow ×1
gitlab ×1
merge ×1