在分支A上工作时使用分支B上的更改

时间:2016-01-06 16:40:32

标签: git version-control

我正在开发分支A但是我需要修复一些与分支A上的功能无关的东西,所以我在分支B上修复了它。

问题是分支A仍然需要使用分支B中的更改。如何在不将这些提交添加到分支A的情况下使用此更改。即开发时我想在没有提交的情况下使用分支B中的更改在分支B中也在分支A中。

这样,一旦PR进行审查,分支A和B可以单独审查。

2 个答案:

答案 0 :(得分:0)

在单独的分支中开发两个不同但依赖的任务不是一个好习惯。通常,如果function stoptimes(stop) { downloadiv("./times.php?stop=" + stop, function(data) { var xml = data.responseXML; var markers = xml.documentElement.getElementsByTagName("weather"); for (var i = 0; i < markers.length; i++) { var name = markers[i].getAttribute("arrival"); document.getElementById("h2").innerHTML = name; } }); } function downloadiv(url, callback) { var requesta = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest; requesta.onreadystatechange = function() { if (requesta.readyState == 4) { requesta.onreadystatechange = donada; callback(requesta, requesta.status); } }; requesta.open('GET', url, true); requesta.send(null); } function donada() {} function load() { var map = new google.maps.Map(document.getElementById("map"), { center: new google.maps.LatLng(53.5, -8), zoom: 7, }); var infoWindow = new google.maps.InfoWindow; geocoder = new google.maps.Geocoder(); // Change this depending on the name of your PHP file downloadUrl("stop-locations.php", function(data) { var xml = data.responseXML; var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var name = markers[i].getAttribute("name"); var location = markers[i].getAttribute("name"); var point = new google.maps.LatLng( parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng"))); var lat=markers[i].getAttribute("lat"); var lng=markers[i].getAttribute("lng"); var html = "<b>" + name + "</b> <br/>"; var stopid = markers[i].getAttribute("stopid"); var marker = new google.maps.Marker({ position:point, map: map }); bindInfoWindow(marker, map, infoWindow, html, stopid); } }); } function bindInfoWindow(marker, map, infoWindow, html, stopid) { google.maps.event.addListener(marker, 'click', function() { infoWindow.setContent(html); infoWindow.open(map, marker); stoptimes(stopid); }); } function downloadUrl(url, callback) { var request = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest; request.onreadystatechange = function() { if (request.readyState == 4) { request.onreadystatechange = doNothing; callback(request, request.status); } }; request.open('GET', url, true); request.send(null); } function doNothing() {} 依赖于task B,则必须在开始task A之前推送task A。 Git主要提供分支选项,允许您同时开发独立任务。

但是当您处于开发阶段时,您可以轻松地将分支切换到分支。使用以下方式,

task B

答案 1 :(得分:0)

在开发分支A期间,您可以使用B对分支rebase进行更改,在这种情况下,在分支A中进行的所有提交都将高于提交分支B,然后在完成分支A的开发之后,您可以使用交互模式和B选项使用rebase删除从分支drop复制的提交

使用B将分支A中的提交复制到分支rebase

git checkout `A`
git rebase `B`

使用B删除分支A中的分支rebase -i中的提交:

git checkout `A`
git rebase -i HEAD~3

数字3是分支AB中提交的总次数。 在编辑器中,您将看到所有提交,例如,我们有来自分支B的两个提交,其中包含消息commit-branch-b1commit-branch-b2,另一个提交来自分支A,其中包含消息{{1} }:

commit-branch-a1

现在要删除提交pick f533903 commit-branch-a1 pick c66cc92 commit-branch-b2 pick 647ab90 commit-branch-b1 commit-branch-b2,我们需要在提交哈希值附近将commit-branch-b1更改为pick

drop

之后保存更改并继续pick f533903 commit-branch-a1 drop c66cc92 commit-branch-b2 drop 647ab90 commit-branch-b1 ,结果提交rebasecommit-branch-b2将从分支commit-branch-b1中删除。