반응형
diff
- diff 명령어를 호출하면 두 파일 간의 다른 줄만 표시된다.
예시1
rearrange1.py
import re
def rearrange_name(name):
result = re.search(r"^([\w .]*), ([\w .]*)$", name)
if result == None:
return name
return "{} {}".format(result[2], result[1])
rearrange2.py
import re
def rearrange_name(name):
result = re.search(r"^([\w .-]*), ([\w .-]*)$", name)
if result == None:
return name
return "{} {}".format(result[2], result[1])
diff rearrange1.py rearrange2.py
Code output:
6c6
< result = re.search(r"^([\w .]*), ([\w .]*)$", name)
---
> result = re.search(r"^([\w .-]*), ([\w .-]*)$", name)
'<' 기호 : 첫 번째 파일에서 제거된 줄을 나타낸다.
'>' 기호 : 두 번째 파일에 추가된 줄을 나타낸다. 즉, 이전 줄이 새 줄로 대체되었다는 의미
예시2
diff validations1.py validations2.py
Code output:
5c5,6
< assert (type(username) == str), "username must be a string"
---
> if type(username != str:
> raise TypeError("username must be a string"
11a13,15
> return False
> # Usernames can't begin with a number
> if username[0].isnumeric():
'5c5,6' : 첫 번째 파일의 한 줄이 두 번째 파일의 두 개의 다른 줄로 대체
'11a13,15': 두 번째 파일에 새로 추가된 세 줄을 나타낸다.
'c' : 줄이 변경되었음을 의미
'a' : 추가됨을 의미
- 마지막 if문에 아무것도 존재하지 않는다. => 왜 없지?? => -u 사용
예시3
diff -u validations1.py validations2.py
Code output:
--- validations1.py 2019-06-06 14:28:49.639209499 +0200
+++ validations2.py 2019-06-06 14:30:48.019360890 +0200
@@ -2,7 +2,8 @@
def validate_user(username, minlen):
- assert type(username) == str, "username must be a string"
+ if type(username) != str:
+ raise TypeError("username must be a string")
if minlen < 1:
raise ValueError("minlen must be at least 1")
@@ -10,5 +11,8 @@
return False
if not username.isalnum():
return False
+ # Usernames can't begin with a number
+ if username[0].isnumeric():
+ return False
return True
- 변경된 줄을 문맥과 함께 표시하고, 제거된 줄을 표시하기 위해 '-' 기호를 사용하고 추가된 줄을 표시하기 위해 '+' 기호를 사용한다. => 다른 if문이 있었음을 알 수 있다.
patch
- 일이나 디렉토리의 내용을 수정하는 데 사용된다.
- 일반적으로 diff 명령어를 사용하여 두 파일 간의 차이를 생성한 후, patch 명령어를 사용하여 이러한 차이를 원본 파일에 적용하여 업데이트한다.
diff와 patch 사용하는 이유
- 원본 코드 변경 가능성 : 다른 사람이나 이전 버전의 코드를 기반으로 한 수정 사항을 적용할 때, 원본 코드가 최신 버전이 아닐 수 있다. diff를 사용하면 어떤 버전을 사용하든 변경 사항을 명확히 볼 수 있다.
- 자동화된 변경 적용: patch 명령어는 diff 파일에서 변경 사항을 읽어 원본 파일에 자동으로 적용합니다. 이를 통해 수동으로 변경 사항을 찾아 수정할 필요 없이 효율적으로 코드를 업데이트할 수 있습니다.
- 프로젝트 구조 유지: 대규모 프로젝트에서는 여러 파일이 여러 디렉토리에 분산되어 있을 수 있다. diff는 전체 디렉토리 구조를 비교할 수 있으며, patch 파일에는 각 변경 파일의 위치가 명시되어 있어 파일을 수동으로 올바른 위치에 놓을 필요가 없습니다.
반응형
'Git&GitHub' 카테고리의 다른 글
Introduction to Git and GitHub - 모듈 2(Branching and Merging) (0) | 2024.06.24 |
---|---|
Introduction to Git and GitHub - 모듈 2(Undoing Things) (0) | 2024.06.24 |
Introduction to Git and GitHub - 모듈 2(Advanced Git interaction) (0) | 2024.06.24 |
Introduction to Git and GitHub - 모듈 1(Using Git) (0) | 2024.06.23 |
Introduction to Git and GitHub - 모듈 1(Version Control Systems) (0) | 2024.06.23 |