赞
踩
git add -p
是 Git 中一个非常有用的命令,允许你交互式地选择哪些改动需要添加到暂存区。这对于需要细粒度控制版本控制系统中改动的人来说特别有用。以下是详细介绍、用法和场景案例。
git add -p
(也可以使用 git add --patch
)命令会把当前工作目录中的改动分成多个块(hunk),并逐个地展示给用户,让用户选择是否要暂存这些改动。用户可以对每个块进行以下操作:
y
:暂存这个块n
:不暂存这个块q
:退出,不做任何处理a
:暂存当前文件中所有块d
:不暂存当前文件中的任何块s
:拆分当前块e
:手动编辑当前块?
:显示帮助git add -p
假设你在开发过程中对一个文件做了多处改动,但你只想把其中的一部分改动提交到版本库中。使用 git add -p
可以让你逐个选择哪些改动需要暂存,哪些改动暂时不处理。
例如,你修改了 main.py
文件:
# main.py
def foo():
print("Hello World") # 修改1
def bar():
print("Goodbye World") # 修改2
你希望只提交修改1。可以使用以下步骤:
运行 git add -p
:
$ git add -p
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") # 修改1
def bar():
输入 y
暂存这个改动。
Git 会显示下一个改动块:
@@ -4,3 +4,3 @@ def foo():
def bar():
- print("Goodbye")
+ print("Goodbye World") # 修改2
输入 n
不暂存这个改动。
这样,你就只暂存了修改1,可以进行提交:
$ git commit -m "Update greeting in foo()"
有时,一个块包含了你只想暂存的部分内容。在这种情况下,你可以选择拆分块或手动编辑块。
例如,你对同一个块做了多处修改:
# example.py
def foo():
print("Hello") # 原来的
print("World") # 新添加的
def bar():
print("Goodbye")
你想只暂存 print("World")
的改动,可以这样做:
运行 git add -p
。
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():
输入 s
拆分这个块。
Git 会拆分成两个块,分别显示:
@@ -1,3 +1,3 @@
def foo():
- print("Hello")
+ print("Hello") # 原来的
对第一个块输入 n
。
Git 显示第二个块:
@@ -2,3 +2,4 @@ def foo():
+ print("World") # 新添加的
对第二个块输入 y
。
通过这种方式,你就只暂存了 print("World")
的改动。
git add -p
是一个非常强大且灵活的工具,可以让你在复杂的开发过程中更细粒度地控制哪些改动被暂存和提交。它适用于需要精细控制改动的场景,例如代码审查、调试或分阶段提交功能开发。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。