배경: 나는 사용한다흑요석공부하는 동안 노트를 정리합니다. Markdown 형식의 일반 텍스트 파일 모음 "위에서" 실행된 다음 파일 간의 링크와 연결을 그래픽으로 표시하는 응용 프로그램입니다. 단일 폴더의 하위 폴더에 저장하는 텍스트 파일
내가 원하는 것은: 나는 다가오는 시험을 위해 공부하고 있기 때문에 매일 이러한 텍스트 파일에 정보를 추가하고 있습니다. 궁극적으로 저는 각 파일에 대한 모든 변경 사항이 포함된 자동으로 생성된 단일 텍스트 파일을 갖고 싶습니다. 그날 배운 모든 내용을 다시 읽어서 복습할 수 있는 일종의 "일일 요약"입니다.
추가 배경: 매일 오전 3시에 rsync를 사용하여 내 노트 폴더의 압축되지 않은 복사본을 만들기 위해 cron 작업을 설정했습니다. 이 사본은 결국 어떤 수정이 이루어졌는지 확인하고 싶을 때 참고자료로 활용될 수 있을 것 같습니다.
한 가지 예This is some new text
5월 15일에 파일 A에 다음과 같이 변경했다고 가정합니다. this is some more textual information
파일 B에 - " "를 추가했습니다.
5월 15일 나의 “일일요약”은 다음과 같습니다
"This is some new text"
This is some more textual information"
내 연구: 나는 diff 및 meld(GUI)와 같은 도구가 파일을 비교하는 데 유용하다는 것을 알고 있습니다. diff 출력 형식은 이해하기 어렵습니다. 반면 Meld는 사용하기 매우 쉽지만 GUI 응용 프로그램이므로 출력을 단일 텍스트 파일로 보내는 방법을 모르겠습니다.
답변1
이것은 실제로버전 관리 시스템당신은 거기에 건물을 짓고 있습니다 :)
다행히 이 문제는 해결되었습니다. 그러한 도구 중 하나가 git
바로 이 분야에서 가장 널리 사용되는 도구입니다.
나는 Obsidian에 대해 모르지만 아직 통합되지 않았다고 가정합니다 git
.
처음에는 한 번만 .md 파일이 포함된 디렉터리를 입력하고 현재 디렉터리를 git으로 초기화합니다.저장소, 사용
git init .
0.1. Internet TM 에서는 Obsidian이 해당 구성을
.obsidian
. 우리는 그것을 무시하고 싶기 때문에.gitignore
그 옆에 단 한 줄로 호출되는 텍스트 파일을 넣습니다.
.obsidian/
- 우리가 가져오는 모든 새 파일(이 시점에서는모두Markdown 파일이 새로운 것임) git의 주의를 끌기 위해: (
git add file1.md file2.md …
또는 그냥git add *.md
) - 그러면 인덱스에 추가된 파일의 현재 상태를 기록해 두겠습니다.
git commit -m "This is the initial state"
- 축하해요! 우리는 방금 첫 번째 git 커밋을 했습니다! 실행하여
git log -p
어떤 변경 사항이 포함되었는지 확인하세요. "없음"에서 "콘텐츠가 있는 파일"로 변경되었으므로+
추가된 줄로 시작하는 패치 세트가 있는 로그가 표시됩니다. - 이제 일부 파일을 변경해 보겠습니다. 예를 들어 파일의 세 번째 줄을 변경한다고 가정해 보겠습니다
file3.md
. 저장하고,git commit -m "End of day commit" file3.md
. (대신에새로운파일,git add filename.md
먼저 필요해요! ). git log -p
출력을 확인 하세요. 다음과 같은 내용이 표시됩니다.
@ 3,3
- old line content
+ new line content
더 복잡한 변경에도 마찬가지입니다. diff
커밋 사이에 발생한 변경 사항을 강조 표시하는 표현을 얻게 됩니다. Git은 아주 많은 일을 할 수 있지만, 이에 대해 설명하는 것은 이 질문의 범위를 벗어납니다.
Git 로그 작업을 보다 그래픽적이고 아름답게 만들 수 있는 도구는 아주 많습니다. tig
예를 들어, 저는 그것을 많이 사용합니다.
따라서 오전 3시 rsync 작업 대신 적절한 조치를 취하면 git add *.md; git commit -sm "Automatic end of day commit"
변경 사항 추적이 쉬워집니다. 백업 목적으로는 그냥 수행합니다 git push
(다시 말하지만 이것은 과잉입니다. 당신이 내용을 복사한다고 말했기 때문에 언급하는 것뿐입니다 rsync
. 이것은 백업 목적이라고 가정합니다).