如何使用git bash在git中暂存单行?

只需创建一个包含空test.txt文件的文件夹,然后添加并提交即可。 然后添加以下内容:

new line keep

new line skip

new line bad

new line keep 2

现在假设,我只想保留第一行和最后一行。根据此answer,我应该能够使用git add -i -p test.txts选项拆分单个大块,但这不起作用(并且不会显示该选项)。我想念什么吗?
diff看起来不错:

如何使用git bash在git中暂存单行?


edit in VI的问题:怎么了?我修改成功

如何使用git bash在git中暂存单行?

然后我想退出但

如何使用git bash在git中暂存单行?

w5201021965 回答:如何使用git bash在git中暂存单行?

这在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外部即可。

版本控制系统是一个工具集。如果没有任何锤子和锯子可以解决您的问题,则没有理由滥用螺丝刀作为凿子。只需将文件移到另一个工作台上,那里有一个便于操作的竖锯或路由器,就可以使用它。

本文链接:https://www.f2er.com/3151850.html

大家都在问