대화형 명령어
git add 명령에 -i 나 --interactive 옵션을 주고 실행하면 대화형 모드로 들어간다.
$ git add -i
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now>
Staging Area 파일 추가하고 추가 취소하기
위의 Commands 처럼 2, 나 u 입력하고 엔터
What now> 2
staged unstaged path
1: unchanged +0/-1 TODO
2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
TODO, index.html 파일 Stage 하려면 1, 2를 입력 엔터 하면 * 붙은 파일이 state하도록 선택된 것이다.
Update>> 1,2
staged unstaged path
* 1: unchanged +0/-1 TODO
* 2: unchanged +1/-1 index.html
3: unchanged +5/-1 lib/simplegit.rb
Update>>
여기서 그냥 엔터를 치면 * 파일이 Staging Area로 추가된다.
Update>>
updated 2 paths
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 1
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
TODO 파일을 Unstage하고 싶으면 3 이나 r 을 입력한다.
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 3
staged unstaged path
1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Revert>> 1
staged unstaged path
* 1: +0/-1 nothing TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Revert>> [enter]
reverted one path
상태를 다시 확인하면 TODO 파일이 Unstaged가 되어 있다.
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 1
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: unchanged +5/-1 lib/simplegit.rb
Stated 파일의 변경 내용을 보려면 6 이나 d를 입력한다. 그리고 Staged 된 파일 (1)을 선택한다.
- git diff --cached 라고 실행한 결과와 같다.
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> 6
staged unstaged path
1: +1/-1 nothing index.html
Review diff>> 1
diff --git a/index.html b/index.html
index 4d07108..4335f49 100644
--- a/index.html
+++ b/index.html
@@ -16,7 +16,7 @@ Date Finder
<p id="out">...</p>
-<div id="footer">contact : support@github.com</div>
+<div id="footer">contact : email.support@github.com</div>
<script type="text/javascript">
파일의 일부분만 Stating Area에 추가하기
예를 들어 simplegit.rb 파일은 고친 부분이 두 군데이다. 그 중 하나를 추가하고 나머지는 그대로 두고 싶다 고 하자.
- 대화형 프롬프트에서 5 나 p를 입력한다.
- 그러면 Git은 부분적으로 Staging Area에 추가할 파일이 있는지 묻는다.
- 파일을 선택하면 파일의 특정부분을 Staging Area에 추가할 것인지 부분별로 구분하여 묻는다.
diff --git a/lib/simplegit.rb b/lib/simplegit.rb
index dd5ecc4..57399e0 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -22,7 +22,7 @@ class SimpleGit
end
def log(treeish = 'master')
- command("git log -n 25 #{treeish}")
+ command("git log -n 30 #{treeish}")
end
def blame(path)
Stage this hunk [y,n,a,d,/,j,J,g,e,?]?
여기에서 ?를 입력하면 선택 가능한 명령어를 설명해준다.
Stage this hunk [y,n,a,d,/,j,J,g,e,?]? ?
y - stage this hunk
n - do not stage this hunk
a - stage this and all the remaining hunks in the file
d - do not stage this hunk nor any of the remaining hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
y 나 n을 입력 하면 각 부분을 Stage할지 말지 결정할 수 있다. status 명령으로 확인해보면 결과는 다음과 같다.
- simplegit.rb 파일은 부분적으로 Stage했다.
- 이제 대화형 모드를 종료하고 일부분만 Stage한 파일을 커밋할 수 있다.
- git add -p 나 git add --patch 로도 같은일을 할 수 있다.
What now> 1
staged unstaged path
1: unchanged +0/-1 TODO
2: +1/-1 nothing index.html
3: +1/-1 +4/-0 lib/simplegit.rb
'책 > 프로 Git' 카테고리의 다른 글
Git 도구-4 - 히스토리 단장하기 (0) | 2020.07.29 |
---|---|
Git 도구-3 - Stashing (0) | 2020.07.29 |
Git 도구-1 - 리비전 조회하기 (0) | 2020.07.29 |
분산 환경에서의 Git-5 - 프로젝트 운영하기 (0) | 2020.07.29 |
분산 환경에서의 Git-4 - 프로젝트에 기여하기 - 공개 팀 (0) | 2020.07.28 |