如何在git中合并两个分支,从分支中保留必要的文件?
合并两个分支时,如果文件在一个分支中删除而在另一个分支中没有删除,则最终删除该文件.
例如:
如何再现:
用一个文件创建一个git repo.
git init
echo "test" > test.txt
git add .
git commit -m "initial commit"
Run Code Online (Sandbox Code Playgroud)创建一个分支
git branch branchA
Run Code Online (Sandbox Code Playgroud)删除master中的文件
git rm test.txt
git commit -m "removed file from master"
Run Code Online (Sandbox Code Playgroud)在branchA中进行任何不接触已删除文件的更改(必须保持不变以避免冲突)
git checkout branchA
touch something.txt
git add .
git commit -m "some branch changes"
Run Code Online (Sandbox Code Playgroud)从这里,我发现合并这两个分支的任何方式都删除了test.txt文件.假设我们依靠文件的branchA
,这是一个很大的问题.
失败的例子:
合并1
git checkout branchA
git merge master
ls test.txt
Run Code Online (Sandbox Code Playgroud)
合并2
git checkout master
git merge …
Run Code Online (Sandbox Code Playgroud) 在我没有使用类型系统的语言中开始的每个项目中,我最终开始发明一个运行时类型系统.也许"类型系统"这个词太强大了; 至少,当我使用复杂数据类型时,我创建了一组类型/值范围验证器,然后我觉得需要对可以创建和修改数据类型的位置保持偏执.
直到现在我才三思而后行.作为一名独立的开发人员,我的方法已经在一些小项目中实践,并且没有理由他们现在停止工作.
尽管如此,这一定是错的.我觉得好像我没有"正确"使用动态类型的语言.如果我必须发明一个类型系统并自己强制执行,我也可以使用一种类型的语言.
所以,我的问题是:
以下是您需要考虑的具体示例.我正在使用erlang中的日期时间和时区(一种动态的强类型语言).这是我使用的常见数据类型:
{{Y,M,D},{tztime, {time, HH,MM,SS}, Flag}}
Run Code Online (Sandbox Code Playgroud)
...其中{Y,M,D}
是表示有效日期的元组(所有条目都是整数),tztime
并且time
是原子,HH,MM,SS
是表示24小时合理时间的整数,并且是原子Flag
之一u,d,z,s,w
.
此数据类型通常从输入中解析,因此为了确保有效输入和正确的解析器,需要检查值的类型是否正确,以及有效范围.稍后,将此数据类型的实例相互比较,使其值的类型更加重要,因为所有术语都会进行比较.来自erlang参考手册
number < atom < reference < fun < port < pid < tuple < list < bit string
Run Code Online (Sandbox Code Playgroud) 给出一些输入词,我希望有一个实用程序,它将返回一组不同的相关术语,短语或概念.需要注意的是,它需要有一个大的术语图表,否则该功能将不会非常有用.
例如,提交"棒球"将返回
["shortstop", "Babe Ruth", "foul ball", "steroids", ... ]
Run Code Online (Sandbox Code Playgroud)
谷歌集是我能找到这种功能的最好的例子,但我不能使用它,因为他们没有公共API(我不会违反他们的TOS).此外,单字输入不会获得非常多样化的结果.我正在寻找切线上的解决方案.
我最接近实验的是使用WikiPedia的API来搜索类别和反向链接,但是无法通过"相关性"或"流行度"直接对这些结果进行排序.如果没有这个,建议清单是庞大而且遍布整个地方,这不是立即有用而且非常难以减少.
使用词库也可以最低限度地工作,但这会遗漏任何专有名词或切向相关的术语(如上面列出的任何结果).
我很乐意重用一个开放服务,如果存在,但我还没有找到足够的东西.
我正在寻找一个既方式来实现这一点无论在公司内部有体面填充的起始一套,或重复使用一个免费的服务,提供了这一点.
有解决方案吗? 提前谢谢!
更新: 感谢您提供令人难以置信的密集和信息丰富的答案.我会在6到12个月内选择一个成功的答案,当我希望了解你所有建议=)
我正在研究Erlang文档,试图了解设置OTP gen_server和supervisor的基础知识.每当我的gen_server崩溃时,我的主管也会崩溃.事实上,每当我在命令行上出错时,我的主管就会崩溃.
我希望gen_server在崩溃时重新启动.我希望命令行错误对我的服务器组件没有任何影响.我的主管不应该崩溃.
我正在使用的代码是一个基本的"回声服务器",它回复你发送的任何内容,以及一个主管,它最多每分钟重启一次echo_server 5次(one_for_one).我的代码:
echo_server.erl
-module(echo_server).
-behaviour(gen_server).
-export([start_link/0]).
-export([echo/1, crash/0]).
-export([init/1, handle_call/3, handle_cast/2]).
start_link() ->
gen_server:start_link({local, echo_server}, echo_server, [], []).
%% public api
echo(Text) ->
gen_server:call(echo_server, {echo, Text}).
crash() ->
gen_server:call(echo_server, crash)..
%% behaviours
init(_Args) ->
{ok, none}.
handle_call(crash, _From, State) ->
X=1,
{reply, X=2, State}.
handle_call({echo, Text}, _From, State) ->
{reply, Text, State}.
handle_cast(_, State) ->
{noreply, State}.
Run Code Online (Sandbox Code Playgroud)
echo_sup.erl
-module(echo_sup).
-behaviour(supervisor).
-export([start_link/0]).
-export([init/1]).
start_link() ->
supervisor:start_link(echo_sup, []).
init(_Args) ->
{ok, {{one_for_one, 5, 60},
[{echo_server, {echo_server, start_link, …
Run Code Online (Sandbox Code Playgroud) 我已经实现了一个 gen_server 和 supervisor:test_server
和test_sup
. 我想从 shell/CLI 测试它们。我已经编写了它们的start_link
函数,以便它们的名称在本地注册。
我发现我可以test_server
很好地从命令行生成,但是生成的test_sup
根本不允许我与服务器进行交互。
例如,我可以test_server
通过执行来生成一个:
1> spawn(test_server, start_link, []).
<0.39.0>
2> registered().
[...,test_server,...]
Run Code Online (Sandbox Code Playgroud)
我可以与服务器交互,一切看起来都很好。
但是,如果我尝试使用 做同样的事情test_sup
,则在我的“CLI 过程”(使用registered/0
)中不会注册新名称/Pid 。我的test_server
似乎已经生成,但我无法与之交互(请参阅 Lukas Larsson 关于 SASL 的评论以了解为什么这是真的)。
我假设我在我的主管中编码了一个错误,但是这种启动主管的方法非常有效:
1> {ok, Pid}= test_sup:start_link([]).
{ok, <0.39.0>}
2> unlink(Pid).
true
3> registered().
[...,test_server,test_sup,...]
Run Code Online (Sandbox Code Playgroud)
为什么我可以生成 gen_server 但不能生成主管?
更新
我正在使用的代码可以在这篇文章中找到。我正在使用echo_server
and echo_sup
,两个非常简单的模块。
鉴于该代码,这有效:
spawn(echo_server, start_link, []).
Run Code Online (Sandbox Code Playgroud)
这不会:
spawn(echo_sup, start_link, []).
Run Code Online (Sandbox Code Playgroud) 我希望能够在我的设备上开发并立即运行Android应用程序.我玩过sl4a和蓝牙键盘,但应用程序和ide不是为我想用它们而设计的.我有什么选择?
澄清:我想要一个不涉及任何计算机的移动开发环境(除了我的Android设备).我想要一个简单的代码编辑器,比如emacs或scite,以及某种完整的解释器或编译器,用于在设备上运行的完整android api .我清楚地在做梦,但今天我能接近多少?
JSP或任何相关的轻量级技术(如JSTL)是执行HTTP POST"数据分组",还是以PHP的方式支持表单元素"索引"?
例如,您可以使用以下输入创建HTML表单:
<input type="text" name="person[1][name]" />
<input type="text" name="person[1][age]" />
<input type="text" name="person[2][name]" />
<input type="text" name="person[2][age]" />
Run Code Online (Sandbox Code Playgroud)
...并且PHP会自动将其解析为嵌套的关联数组.JSP,Java Servlet或任何相关的规范或工具是否提供开箱即用的这种翻译?
目标是以单一形式提交多个"记录组",并在JSP或Servlet中处理它们的服务器端.
要求:
相关链接:
erlang ×3
erlang-otp ×2
algorithm ×1
android ×1
branch ×1
gen-server ×1
git ×1
graph-theory ×1
httprequest ×1
java ×1
jsp ×1
merge ×1
nlp ×1
semantics ×1
servlets ×1
types ×1
web-services ×1