대화식으로 지정된 파일의 지정된 부분만 스테이지 [git]
7508 단어 CUISourceTreeGit
git add .
글쎄, git 마스터에게서는 미친 것일지도 모르지만, 아마 이런 git의 조작을하고있는 것은 나만이 아닌 것 같다.
하지만 작업 트리에 있는 모든 파일 스테이지에 대해 일을 하면 다음과 같은 일이 일어날 가능성이 있다(아니 실제로 잘 일어나고 있었다)
... 등
에디터의 자동 성형이 diff에 들어가면, GUI에서 diff를 보고 있는 사람으로부터 하면(자) 누가 코드 나 파일이 로그에 남아 있으면 무엇보다 당황합니다.
그래서 다음은 파일이나 파일의 변경 행을 대화적으로 미세하게 커밋하는 방법
하고 싶은 일
-b
라는 행만 커밋 $ git status --short
M file
?? new-file
?? tmp-file
$ git diff
diff --git a/file b/file
index c74fa01..fa0600c 100644
--- a/file
+++ b/file
@@ -2,8 +2,9 @@ first commit
first commit
first commit
first commit
-
+
first commit
+second commit
first commit
first commit
first commit
@@ -15,3 +16,4 @@ first commit
first commit
first commit
first commit
+
작업
대화 쉘 모드로 이동
$ git add -i
staged unstaged path
1: unchanged +2/-2 file
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
각 명령은 철자의 머리 글자를 입력하거나 숫자를 입력하여 실행합니다.
staged unstaged path
1: unchanged +3/-1 file
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> p #部分的にステージする
staged unstaged path
1: unchanged +3/-1 file
Patch update>> 1 #fileを選択する
staged unstaged path
* 1: unchanged +3/-1 file # 選択された状態
Patch update>> #Enterでファイル選択を終了する
diff --git a/file b/file
index c74fa01..fa0600c 100644
--- a/file
+++ b/file
@@ -2,8 +2,9 @@ first commit
first commit
first commit
first commit
-
+
first commit
+second commit
first commit
first commit
first commit
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?
patch를 실행하면 대화 모드로 이행한다.
diff --git a/file b/file
index c74fa01..fa0600c 100644
--- a/file
+++ b/file
@@ -2,8 +2,9 @@ first commit
first commit
first commit
first commit
-
+
first commit
+second commit
first commit
first commit
first commit
Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]? s #ハンクを分割する
Split into 2 hunks.
@@ -2,5 +2,5 @@
first commit
first commit
first commit
-
+
first commit
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? n #自動整形された行はステージしない
@@ -6,4 +6,5 @@
first commit
+second commit
first commit
first commit
first commit
Stage this hunk [y,n,q,a,d,/,K,j,J,g,e,?]? y #ステージする
@@ -15,3 +16,4 @@ first commit
first commit
first commit
first commit
+
Stage this hunk [y,n,q,a,d,/,K,g,e,?]? n #自動整形された行はステージしない
더 이상 행크가 없으면 자동으로 대화 모드가 종료됩니다.
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> a #トラッキングされていないファイルをステージするモードに移行
1: new-file
2: tmp-file
Add untracked>> 1 #new-fileのみをステージ
* 1: new-file
2: tmp-file
Add untracked>> #Enterで終了
added one path
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> s #ステータスを確認
staged unstaged path
1: +1/-0 +2/-1 file
2: +0/-0 nothing new-file
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> q #終了
이상의 조작으로 이하와 같은 스테이터스가 된다
$ git status --short
MM file
A new-file
?? tmp-file
$ git diff
diff --git a/file b/file
index 928e9ef..fa0600c 100644
--- a/file
+++ b/file
@@ -2,7 +2,7 @@ first commit
first commit
first commit
first commit
-
+
first commit
second commit
first commit
@@ -16,3 +16,4 @@ first commit
first commit
first commit
first commit
+
$ git diff --cached
diff --git a/file b/file
index c74fa01..928e9ef 100644
--- a/file
+++ b/file
@@ -4,6 +4,7 @@ first commit
first commit
first commit
+second commit
first commit
first commit
first commit
diff --git a/new-file b/new-file
new file mode 100644
index 0000000..e69de29
그리고는 보통 커밋 뿐이지만, 버릇으로
second commit
덤
덧붙여서 SourceTree로 위의 내용을 조작하는 것은 매우 간단했다.
커밋할 행 선택
선택한 행을 스테이지로 이동 선택
추가할 새 파일만 선택
이상
Reference
이 문제에 관하여(대화식으로 지정된 파일의 지정된 부분만 스테이지 [git]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tani-shi/items/ea9a651737e8617865b2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(대화식으로 지정된 파일의 지정된 부분만 스테이지 [git]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tani-shi/items/ea9a651737e8617865b2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)