如果已将更改添加到舞台中,如何进行其他更改?

时间:2017-01-17 13:10:36

标签: git

谢谢你浏览这个问题。

我正在创建一个自动提交更改的脚本。

当某些更改已添加到舞台上时,是否有办法只提交指定文件中的指定行?

例如,

我有一个空白的hoge.txt。

然后,我添加一些行并提交它们。

diff --git a/hoge.txt b/hoge.txt
index e69de29..b3c5a95 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -0,0 +1,5 @@
+line1
+line2
+line3
+line4
+line5

git status说:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   hoge.txt

然后,我添加了一些更多的line0和line6。

diff --git a/hoge.txt b/hoge.txt
index b3c5a95..6006aa3 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,5 +1,7 @@
+line0
 line1
 line2
 line3
 line4
 line5
+line6

git status说:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   hoge.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   hoge.txt

现在,我想只提交没有上演的更改而不进行更改。但是,第1到第5行必须上演。

git status说:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   hoge.txt

git diff --cached说:

diff --git a/hoge.txt b/hoge.txt
index 588aa45..6006aa3 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,2 +1,7 @@
 line0
+line1
+line2
+line3
+line4
+line5
 line6

1 个答案:

答案 0 :(得分:1)

你不能......

“stage”区域的目标是包含下次提交所需的所有文件,因此您无法通过忽略已暂存的文件来提交未提交的文件。

虽然你想做一些奇怪的事情,你可以做的是:

  1. 存储您的第一个更改:git stash
  2. 进行第二次更改
  3. 将其添加到您的舞台区域:git add hoge.txt
  4. 提交您的工作:git commit -m 'myWork'
  5. 取回您的第一个更改:git stash pop
  6. 您将遇到冲突解决,但您将在第一次更改之前进行第二次更改。