欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > git工具 -- 选择性提交之`git add -p`

git工具 -- 选择性提交之`git add -p`

2024/10/24 12:32:00 来源:https://blog.csdn.net/sz66cm/article/details/140854145  浏览:    关键词:git工具 -- 选择性提交之`git add -p`

git add -p 的详细介绍、用法与场景案例

git add -p 是 Git 中一个非常有用的命令,允许你交互式地选择哪些改动需要添加到暂存区。这对于需要细粒度控制版本控制系统中改动的人来说特别有用。以下是详细介绍、用法和场景案例。

1. 基本介绍

git add -p(也可以使用 git add --patch)命令会把当前工作目录中的改动分成多个块(hunk),并逐个地展示给用户,让用户选择是否要暂存这些改动。用户可以对每个块进行以下操作:

  • y:暂存这个块
  • n:不暂存这个块
  • q:退出,不做任何处理
  • a:暂存当前文件中所有块
  • d:不暂存当前文件中的任何块
  • s:拆分当前块
  • e:手动编辑当前块
  • ?:显示帮助

2. 用法

git add -p

3. 场景案例

场景1:提交一部分改动

假设你在开发过程中对一个文件做了多处改动,但你只想把其中的一部分改动提交到版本库中。使用 git add -p 可以让你逐个选择哪些改动需要暂存,哪些改动暂时不处理。

例如,你修改了 main.py 文件:

# main.pydef foo():print("Hello World")  # 修改1def bar():print("Goodbye World")  # 修改2

你希望只提交修改1。可以使用以下步骤:

  1. 运行 git add -p

    $ git add -p
    
  2. Git 会显示第一个改动块:

    diff --git a/main.py b/main.py
    index 83db48f..f84f3e7 100644
    --- a/main.py
    +++ b/main.py
    @@ -1,3 +1,3 @@def foo():
    -    print("Hello")
    +    print("Hello World")  # 修改1def bar():
    
  3. 输入 y 暂存这个改动。

  4. Git 会显示下一个改动块:

    @@ -4,3 +4,3 @@ def foo():def bar():
    -    print("Goodbye")
    +    print("Goodbye World")  # 修改2
    
  5. 输入 n 不暂存这个改动。

这样,你就只暂存了修改1,可以进行提交:

$ git commit -m "Update greeting in foo()"

场景2:拆分和编辑块

有时,一个块包含了你只想暂存的部分内容。在这种情况下,你可以选择拆分块或手动编辑块。

例如,你对同一个块做了多处修改:

# example.pydef foo():print("Hello")  # 原来的print("World")  # 新添加的def bar():print("Goodbye")

你想只暂存 print("World") 的改动,可以这样做:

  1. 运行 git add -p

  2. Git 显示第一个改动块:

    diff --git a/example.py b/example.py
    index 83db48f..f84f3e7 100644
    --- a/example.py
    +++ b/example.py
    @@ -1,3 +1,3 @@def foo():
    -    print("Hello")
    +    print("Hello")  # 原来的
    +    print("World")  # 新添加的def bar():
    
  3. 输入 s 拆分这个块。

  4. Git 会拆分成两个块,分别显示:

    @@ -1,3 +1,3 @@def foo():
    -    print("Hello")
    +    print("Hello")  # 原来的
    
  5. 对第一个块输入 n

  6. Git 显示第二个块:

    @@ -2,3 +2,4 @@ def foo():+    print("World")  # 新添加的
    
  7. 对第二个块输入 y

通过这种方式,你就只暂存了 print("World") 的改动。

4. 总结

git add -p 是一个非常强大且灵活的工具,可以让你在复杂的开发过程中更细粒度地控制哪些改动被暂存和提交。它适用于需要精细控制改动的场景,例如代码审查、调试或分阶段提交功能开发。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com