我有一个Git repo,例如两个分支"master"和"other".它们几乎包含提交到每个子文件夹,因此历史记录中的修订时间没有冲突.现在我想删除"其他"分支; 并以拉链式方式将其提交合并为"master",例如:
Master A1 A2 - - - M3 M4
Other B1 - - - B2 - - B3
Run Code Online (Sandbox Code Playgroud)
变
Master A1 B1 A2 B2 M3 M4 B3
Run Code Online (Sandbox Code Playgroud)
和"其他"消失.因此只剩下一个线性主分支.
这可能与Git的工具包有关吗?
今天早上我让自己陷入正确的尾旋,不得不创建一个分支以恢复到我最后一次提交.现在主分支是一团糟,我唯一感兴趣的是这个带有恢复的新分支.我如何强制master与恢复的分支相同?
可能重复:获取现有的git分支以跟踪远程分支
我知道如何建立一个跟踪远程分支的新分支.但是,如何使现有分支跟踪远程分支.我知道我可以编辑.git/config文件,但似乎应该有一个更简单的方法.
我想从给定的标签中获取分支名称.我试过了,git describe --tag <tag-name>但这并没有为我提供任何分支名称.我尝试使用gitk显示标签和分支,但gitk没有显示标签.当我列出标签时,git tag -l我看到列表中存在标签名称.
我只想要一个简单的命令,可以在提供标签名称时告诉我分支.
我有3家分店
开发,掌握和使用git flow feature start创建的功能分支。
现在,我想将由功能生成的提交合并到单独的修补程序中,这样就可以将其合并到master中,而无需将developer分支合并到master中。我该怎么做?
为了使
开发有100多个提交,这些提交是为单独发行的,
我从开发人员分支出来,并希望将其制作为单独的修补程序。
问题是hotix是一个主分支,因此如果我执行git merge功能,git会将所有开发人员提交与我对该功能的少数提交进行合并。
问题是。如何挑选功能?
编辑:
@Pigueiras
我更喜欢在这种情况下绘制图表。

我只需要将红色标注的提交从功能转移到修补程序即可。
所以现在这些是我的分支:
WalnutiQ> git branch -a
* develop
feature-model_in_javascript
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/feature-model_in_javascript
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
我的目标是删除分支功能-mode_in_javascript,所以我尝试了:
WalnutiQ> git branch -d feature-model_in_javascript
Deleted branch feature-model_in_javascript (was 4604f04).
Run Code Online (Sandbox Code Playgroud)
所以现在当我检查我的分支时,我得到:
WalnutiQ> git branch -a
* develop
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/feature-model_in_javascript # <== HOW DO I DELETE THIS????
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
如何删除该远程分支?我通过点击https://github.com/WalnutiQ/WalnutiQ/branches上的删除按钮手动删除它
我使用Git Bash,并且错误地创建了一个名为-D的分支。在通过Google搜索之后,我尝试了
git branch -d -- -D
Run Code Online (Sandbox Code Playgroud)
获得
error: branch '-D' not found.
Run Code Online (Sandbox Code Playgroud)
而且我也试图从gitk中删除它,但没有成功。
另一方面,我注意到如果git branch从控制台键入或在gitk上显示分支名称,则分支名称会更改。例如,分支在控制台中为-D,但在gitk上用奇怪的字符命名。
此时,我将怪异的名字从gitk复制/粘贴到控制台,然后发出
git branch -d â?"D
Run Code Online (Sandbox Code Playgroud)
没有成功。
但是,我收到警告消息:“警告:您的控制台字体可能不支持Unicode。如果在输出中遇到奇怪的字符,请考虑切换到TrueType字体,例如Lucida Console!”
作为最后一次尝试,我尝试从gitk中删除该分支,但出现一个弹出窗口,显示“错误:分支,但找不到另一个奇怪且较长的名称 ”。
这次,由于无法从弹出窗口复制,因此无法从弹出框复制另一个粘贴又长又怪异的名称到控制台。
我在本地存储库上创建了一个分支,并添加了一些新的java文件.我使用以下命令将我的源代码添加到本地分支.
git add --all
这实际上从Eclipse中添加了一些不需要的元数据文件,例如.metadata/.plugins/org.eclipse.resources/.history/7e
我使用以下命令将更改提交到head:
git commit -m "Commit message"
Run Code Online (Sandbox Code Playgroud)
使用 - 将分支推送到我的远程存储库 -
git push origin <branchname>
Run Code Online (Sandbox Code Playgroud)
我意识到,我将不需要的文件添加到我的远程分支,并希望删除其中一些不是实际源文件的文件.
如何在不弄乱我的java文件的情况下将它们从git分支中删除.
非常感谢您的回复
我删除了一个分支:
git branch -d <branch>
Run Code Online (Sandbox Code Playgroud)
它说:
git branch -d oleg/feature/1533692217
warning: deleting branch 'oleg/feature/1533692217' that has been merged to
'refs/remotes/origin/oleg/feature/1533692217', but not yet merged to HEAD.
Deleted branch oleg/feature/1533692217 (was f7a4a13).
Run Code Online (Sandbox Code Playgroud)
我想我知道这意味着什么,如何用名称恢复分支:
oleg/feature/1533692217
Run Code Online (Sandbox Code Playgroud)
有没有办法恢复分支而不检查它?
请注意,当我将其与集成分支合并时,我压缩了我删除的功能分支,这就是为什么警告消息可能已经出现的一个原因.可能git不处理这种情况?
我们希望在git上有每个开发人员的分支。换句话说,开发人员可以从“开发”分支中分支出来,并创建自己的本地“功能”分支来进行工作。
当他们对工作感到满意时,可以切换到devel,确保它们具有最新文件,然后合并到其“功能”分支中,并在解决任何冲突后将结果推送到原始位置。但是,有一个问题-这使得提交历史非常混乱。
如果这样做git log --graph,“功能”分支不会显示,这就是我们想要的。但是,开发人员现在进行的每个提交都会显示在devel分支上。太丑了 如果有10个开发人员,并且每个开发人员在全部合并到devel中之前对他们的功能分支进行了30次提交,那么devel现在将显示180次提交的历史,共6个功能。如果历史记录仅显示6的消息合并为devel,那就更好了。
有什么方法可以避免合并时使历史变得“混乱”并在合并时忽略本地分支的历史?还是这只是与git对抗过多?
我意识到这听起来有些奇怪,但是他们非常不喜欢所有这些对象最终存储在远程仓库中的想法。
git ×10
git-branch ×10
github ×2
branch ×1
git-checkout ×1
git-flow ×1
git-merge ×1
git-tag ×1
merge ×1