只需创建一个包含空test.txt
文件的文件夹,然后添加并提交即可。
然后添加以下内容:
new line keep
new line skip
new line bad
new line keep 2
现在假设,我只想保留第一行和最后一行。根据此answer,我应该能够使用git add -i -p test.txt
和s
选项拆分单个大块,但这不起作用(并且不会显示该选项)。我想念什么吗?diff
看起来不错:
edit in VI的问题:怎么了?我修改成功
只需创建一个包含空test.txt
文件的文件夹,然后添加并提交即可。
然后添加以下内容:
new line keep
new line skip
new line bad
new line keep 2
现在假设,我只想保留第一行和最后一行。根据此answer,我应该能够使用git add -i -p test.txt
和s
选项拆分单个大块,但这不起作用(并且不会显示该选项)。我想念什么吗?diff
看起来不错:
edit in VI的问题:怎么了?我修改成功
这在git gui
中非常容易做到。在暂存窗口中选择文件。突出显示所需的行,然后右键单击文本区域,然后选择“要提交的阶段行”
对于命令行:
选择e
手动拆分块。这将显示一个文本编辑器。将您不想暂存的任何行的+
更改为#
。
+ new line keep
+
#new line skip
#
#new line bad
#
+new line keep 2
,
(这比答案要长得多,需要格式化,而不是答案。直接答案请参见EncryptedWatermelon's answer。)
<a style="text-underline-position:below; cursor:pointer" @onclick="(() => CloseValidation())">x</a>
的“ split”选项仅处理差异块具有两个融合子更改的情况:
if (FileUpload1.HasFile)
{
try
{
string fileExtension = Path.GetExtension(FileUpload1.FileName);
if (fileExtension.ToLower() == ".doc" || fileExtension.ToLower() == ".docx" || fileExtension.ToLower() == ".pdf")
{
if (FileUpload1.PostedFile.ContentLength > 1024000)
{
StatusLabel.ForeColor = System.Drawing.Color.Red;
StatusLabel.Text = "Status do upload: O arquivo deve ter menos de 1000 kb!";
}
else
{
string conexaoAccess = ConfigurationManager.ConnectionStrings["conexaoAccess"].ToString();
using (OleDbConnection conexaodb = new OleDbConnection(conexaoAccess))
{
conexaodb.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE tbl_reg SET titulo_trab = @trab WHERE nome_user = @nome",conexaodb);
var parTrab = cmd.CreateParameter();
parTrab.ParameterName = "@trab";
parTrab.DbType = DbType.String;
parTrab.Value = mdl.trab;
cmd.Parameters.Add(parTrab);
var parNome = cmd.CreateParameter();
parNome.ParameterName = "@nome";
parNome.DbType = DbType.String;
parNome.Value = mdl.nome;
cmd.Parameters.Add(parNome);
int rowsChanged = cmd.ExecuteNonQuery();
//arquivo
try
{
Random r = new Random();
int n = r.Next();
DBEngine dbe = new DBEngine();
Database db = dbe.OpenDatabase("C:\\Users\\Willian\\Documents\\dbPIM\\dbpim.accdb",false,"");
Recordset rs = db.OpenRecordset("SELECT * FROM tbl_reg WHERE nome_user = @nome ",RecordsetTypeEnum.dbOpenDynaset,LockTypeEnum.dbOptimistic);
rs.MoveFirst();
rs.Edit();
Recordset2 rs2 = (Recordset2)rs.Fields["Campo1"].Value;
rs2.AddNew();
Field2 f2 = (Field2)rs2.Fields["campo"];
f2.LoadFromFile("C:\\temp\\test" + n + fileExtension.ToLower());
rs2._30_Update();
rs2.Close();
rs._30_Update();
rs.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
例如可以拆分,但是:
git add -p
无法拆分:这是单个更改,不是上下文相接(或重叠)并因此融合为一个块的两个更改。
要让@@ ...
context
+new1
context
context
+new2
context
应用这样的补丁,必须将补丁变成仅添加(和/或删除)补丁中某些行的说明。正如元指令所说,这涉及删除(或注释掉)您根本不想添加的行,并且替换您不希望的行上的减号不想删除。那就是:
@@ ...
context
+new1
+new2
context
应成为:
git add -p
结果是,如通过阅读所看到的,一组指令说:在原始文件中,找到以下行:@@ ...
context-above
+new1
-old
+new2
context-below
,然后依次是@@ ...
context-above
+new1
old
context-below
和{{ 1}}作为上下文。在该区域中,插入新行context-above
。
遵循old
中正确的补丁说明,有几个最新的Git版本存在问题。如果您使用的是这些特定的Git版本,则可以选择将Git降级为没有该bug的版本,将Git升级为已修复该bug的版本,或者-我个人最喜欢的-不要为这个愚蠢的“ hacking the补丁以制作新补丁”方法:只需将文件复制到VCS外部即可。
版本控制系统是一个工具集。如果没有任何锤子和锯子可以解决您的问题,则没有理由滥用螺丝刀作为凿子。只需将文件移到另一个工作台上,那里有一个便于操作的竖锯或路由器,就可以使用它。