git show
많은 부모와의 커밋에 diff가 표시되지 않습니다. 왜냐하면 자식은 N
개 (예 : N
은 부모 커밋의 수)를 알지 못하기 때문에 커밋에 diff가 표시되지 않습니다.
손에 의한 충돌을 해결할 때이 diff는 커밋 메시지에 포함되어 있습니다.
어떻게 가능합니까?
쉬운. 이 병합 커밋에서 my new contents
은 방금 제거되었습니다. 병합 사이
- DIFF 커밋 그것은 첫째 부모가 병합 사이
- DIFF는 확약 그리고 그것은 둘째 부모가
마지막으로, git diff SHA^!
유용해야한다 커밋 : 당신은 두 개의 차이점 중 하나에서 찾을 수 있습니다.
어떻게 수행 할 수 있습니까?
우리가 2
$> git log --oneline
30917b9 add my new contents
d6a09ba add a.txt
커밋과 마지막 커밋과 유사한이 있다고 가정하자 당신의
$> git show
commit 30917b94b6e6740cacc854e891d67d29195b98c3
Author: b <a>
Date: Fri May 17 00:29:56 2013 +0400
add my new contents
diff --git a/a.txt b/a.txt
index 3be5d25..af49de6 100644
--- a/a.txt
+++ b/a.txt
@@ -1,3 +1,4 @@
old contents
old contents
old contents
+my new contents
그런 사람이 처음 커밋에 따라 변경 (d6a09ba
) 수행
commit f6997eae5f40f156897eedfbf058bcf3fe8730b6
Author: b <a>
Date: Fri May 17 00:34:38 2013 +0400
I don't care about new contents
diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..d099a6a
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+well, this is a new file
을
그는 그것을 밀어 붙이려고하고 거부했습니다 : [
$> git push origin
To jws:~/test.git
! [rejected] HEAD -> master (non-fast-forward)
그런 다음 그는 당신의 커밋 끌어와 병합
$> git pull origin master
From jws:~/test
* branch master -> FETCH_HEAD
Merge made by the 'recursive' strategy.
a.txt | 1 +
1 file changed, 1 insertion(+)
이것은이 Merge branch 'master' of jws:~/test
같은 메시지를 커밋입니다했다. 그리고는 git commit --amend
봐라와 커밋 준비를 추가, git add a.txt
와 준비에 추가, 파일 a.txt
편집 : a.txt
의 변화에 대한
$> git show
commit 51a3f94436cf1a9a763d84acfcf7202f9f2d88ec
Merge: f6997ea 30917b9
Author: b <a>
Date: Fri May 17 00:36:56 2013 +0400
Merge branch 'master' of jws:~/test
아무것도하지만 우리가 차이점 중 하나에서 볼 수 있듯이 수정 :
를
$> git diff 51a3f94436cf1a9a763d84acfcf7202f9f2d88ec^2 51a3f94436cf1a9a763d84acfcf7202f9f2d88ec
diff --git a/a.txt b/a.txt
index af49de6..3be5d25 100644
--- a/a.txt
+++ b/a.txt
@@ -1,4 +1,3 @@
old contents
old contents
old contents
-my new contents
diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..d099a6a
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+well, this is a new file
예,하지만 문제는 a.txt에 충돌이 있지만 부모의 변경 사항 중 하나에서 콘텐츠가 여전히 삭제 될 수 있다는 것입니다. –
> 간편합니다. 이 병합 커밋 내 새로운 내용이 그냥 제거됩니다. 당신은 절대적으로 맞습니다, 고마워요. 다음 질문 : 어떻게 될 수 있습니까? –
충돌은'git commit --amend' 또는 어떤 것으로 제거 될 수 있습니다. 잘 알고 있겠지만, 병합 커밋은 많은 부모와의 커밋 일 뿐이며 병합 커밋 메시지의이 충돌 diff는 텍스트 일 뿐이며 자동으로 계산 된 diff는 아닙니다. 조심해! –