我刚开始使用Git并发现当我在分支中实现一个功能时,我会遇到一些真正需要尽快推送到主干的bug.为了做到这一点,我使用checkout切换回trunk,进行更改并提交它们.我现在有一个没有bug的主干.
不幸的是,我的分支也需要修复此错误.由于功能不完整,我不能将分支合并回主干.如何更改我的分支以便它接收我对主干所做的更改?
如果重要的话,我正在自行开发,因此只需要担心一个存储库.
我正在使用TortoiseGit,因此特定于此的说明将有所帮助,但不是必需的.
我有两个分支dev和master.我希望我的dev分支被master分支完全覆盖,因为我知道master是最新的.我怎么能用TortoiseGit UI做到这一点?
我尝试使用TortoiseGit进行合并,但这会导致许多冲突.
请告诉我Tortoise GIT中的答案,因为我只使用UI并且不熟悉实际的GIT命令.
我习惯于在TortoiseGit中修改提交,然后在Push窗口中选中Force Overwrite Existing Branch(可以放弃更改)复选框.但是现在Push窗口中缺少复选框.我现在如何强行推送TortoiseGit?
在TortoiseGit中
当我点击右键单击 - >推送,确定,给它用户/通过,然后有一个创建拉取请求按钮给它一个开始,URL,结束.我点击了,但没有任何反应.
Pull请求(0)显示在我的仓库中.
另外一件事,我如何制作拉取请求,然后根据需要使用相同的软件更新(TortoiseGit)
是的,所以我的任务是找出GIT是否能解决我们即将出现的问题.(轻松创建功能分支,修补程序分支,错误修复分支,同时保持主干干净,只有功能完成的问题(功能,修补程序,错误修复等).因此,一旦需要完成发布,将不会发布半完成/已提交的问题.
以前我们一直在使用SVN,其中包含git-flow /分支模型的修改版本:http://nvie.com/img/git-model@2x.png git-master是我们的svn-trunk.这是有效的,但对SVN来说有点麻烦.特别是因为我们使用了两个共享存储库.
这就是问题所在.以前我们使用这两个共享存储库作为外部,并且所有外部引用都指向lib/a/branches/develop和lib/b/branches/develop.如果需要功能/修补程序/ bugfix分支,这很麻烦,因为它需要创建三个分支,使用新引用修改超级项目,然后提交所述更改.
经过一些小心的修补,我们转而使用库存储库的分支.(所以,superProject/lib/a是一个分支lib/a/branches/develop)和未来的更新(两种方式)将要求从superProject/lib/ain到合并lib/a/branches/develop或反之亦然.
然而,一旦释放即将到来,这仍然无法解决我们半完成提交的问题.(遗憾的是,在我工作的公司,这可能需要一个小时).所以我们想了一点,并同意开始尝试使用Atlassian提供的工具多一点,从而尝试Bitbucket(之前使用Crucible/FishEye)并使用他们特殊的集成工作流程来git,每个问题的分支都可以创建并完成后,可以创建一个拉取请求,以便我们的发布管理器控制下一个版本中的内容和内容./develop/由于所有问题都将使用所述工作流程完成,因此不再是半生不熟的问题.
我面临的问题是如何合并这些共享项目(库a和b).我一直在阅读网页,发现多个网站都在谈论git-submodules,git-subtree-merge-strategy,git-subtree(脚本)和手动合并(与子树合并相同?).但没有人真正回答我的一些新手问题.到目前为止,我一直对git-subtree最感兴趣,但GUI支持似乎很糟糕.TortoiseGit,SourceTree都没有对git-subtree有一些很好的GUI支持,这需要命令行动作,而且对大多数同事来说,他们不喜欢做命令行事情.
还困扰我的是,没有好的,我能找到的,关于从哪个存储库/分支创建git-subtree的信息,以及来自远程git存储库的克隆不会自动包含正确的远程链接的事实对于任何git子树.因此,如果我不想让我的任何开发人员能够从他们的远程源更新git子树,他们将不得不手动执行git remote add -f libraryXXX http://repohere/lib-xxx.git(一次)然后执行git subtree pull --prefix locationGoesHere libraryXXX master (--squash optional)
这一切看起来都比SVN的工作流程更加繁琐,并且来回合并分支.我错过了什么吗?我读的是过时的信息吗?我只是没有看到使用共享存储库的正确方法?
我使用的一些资源:
我正在寻找一种方法,可以看到我现在的git repo的整个历史.从它的外观来看,egit的"Show in History"只会显示当前提交的提交.有了这个,我的意思是如果我做commit1和commit2然后决定结帐第一个,运行项目的"在历史中显示"将不会显示commit2.
有什么方法可以让我看到回购的整个历史吗?我想这对于git log master控制台命令的界限会有所帮助.
换句话说,如果您在初次提交的任何时候进行结账,如果您的历史记录不显示,您应该如何在以后检查新的提交?
我一直在检查,似乎TortoiseGit"遭受"同样的问题.它确实是一个问题,还是仅仅是我不按照我们应该做的事情?
谢谢
我们最近遇到一个问题,合并以某种方式导致所有更改导致一个父在合并提交中被撤消,并且在该点之后已经应用了几个提交.所有这些都被推送到我们的共享源存储库.我希望能够恢复错误的合并并重新应用其他更改集.最简单的方法是什么?
ASCII艺术示例:
A-B-C-D
/ \
P-Q M-X-Y-Z
\ /
1-2-3-4
---time--->
Run Code Online (Sandbox Code Playgroud)
提交M包括更改A到D,但所有更改1到4都被该提交还原.
我希望能够恢复,例如.更改集4,并重新应用AD和X更改为Z,理想情况下无需手动重做每个更改.
如果这是不可能的,我想听听最好的解决方法 - 例如.也许从4分支,再次合并D小心不要破坏任何东西,然后手动重新应用X到Z?
(一个理想的情况是知道如何使用TortoiseGit,虽然只知道命令行应该允许我推断其余的.)
如何在不获取更改/提交的情况下获取远程日志?
我只想查看日志,如果自上次以来有任何新的更改pull.基本上首先避免必须stash或commit我的更改.
git帮助文件有这个例子,它以倒置的形式给出我想要的结果:
git log master --not --remotes=*/master
Shows all commits that are in local master but not in any remote repository master branches
Run Code Online (Sandbox Code Playgroud) 我在10天前在Git存储库中创建了一个分支,并在创建的分支中进行了一些更改.现在我需要使用主更新来更新我的分支(即在分支采用后通过master完成提交)并且需要与master合并.
帮助我如何在TortoiseGit中实现这一目标.
用TortoiseGit指导我,不要通过Git bash或Git CLI等.
谢谢,
git ×10
tortoisegit ×10
branch ×1
dvcs ×1
eclipse ×1
egit ×1
git-subtree ×1
logging ×1
master ×1
merge ×1
push ×1
repository ×1
svn ×1