논문 작성에 Git 사용
Latex로 논문을 작성하기 위해 Git을 사용할 계획입니다. Git은 소프트웨어 개발을 위해 특별히 설계되었으므로 내 요구 사항에 적합합니까? 그것이 저에게 좋은 선택이라면 논문 작성에 이상적인 Git에서 사용할 수있는 특별하고 독특한 기능은 무엇입니까? 또한 Git 작업 흐름에 들어가기 전에 어떤 예방 조치를 취해야하는지 알고 싶습니다. 저는 Git의 완전한 초보자이므로 시작하기 전에 시작점은 무엇입니까?
몇 가지 기술적 고려 사항과 모범 사례가 있습니다. 저는 두 번째 논문, 특히 당신의 논문 및 / 또는 논문을 쓰기 위해갑니다. 기술적 인 내용은 git 튜토리얼을 확인할 수 있습니다.
논문의 디렉토리 구조를 정의하십시오. 나중에 변경할 수 있으며 git을 사용하여 변경 사항을 추적 할 수 있습니다. 좋은 구조가 있으면 삶이 더 쉬워 질 것입니다.
여러 파일로 작업합니다 (LaTeX에서 포함 및 / 또는 입력 사용). 장 또는 섹션별로 분할 할 수 있습니다. 이렇게하면 논문의 특정 부분 (예 :)과 관련된 변경 사항을 쉽게 추적 할 수
git log content/introduction.tex
있습니다.자동 생성 된 파일이 아니라 만질 파일 만 추적하십시오. 적절한 .gitignore 파일을 만들면 많은 도움이됩니다 (LaTeX는 많은 작업 파일을 생성합니다).
프로그램에서와 같이 마이크로 커밋, 즉 아이디어 / 기능 / 수정 / 활동 당 하나의 커밋을 수행합니다.
커밋 할 때마다 모든 변화에서 달성하려고했던 것을 설명하는 의미있는 메시지 (높은 수준)를 작성하십시오. 일주일이 지나면 무엇을 성취하려고했는지 기억이 나지 않을 수 있습니다.
모든 활동 / 아이디어 / 수정을 추적하는 것은 [(4) 및 (5) 참조] 귀하가 얼마나 많은 일을했는지 아는 데 매우 도움이 될 수 있습니다 (사용
git log
). 귀하는를 기반으로 상사를위한 사전 보고서를 작성할 수 있습니다git log
. 또한 관리자와 저장소를 공유 할 수 있고 (웹 인터페이스를 사용하여) 논문에서 수행 한 작업을 확인할 수 있습니다. 다음 회의를 위해 그들은 무엇을 기대해야하는지 알게 될 것입니다 (상사가 RSS를 얼마나 좋아하는지에 따라 달라집니다).git을 사용하면 기분을 좋게 유지하는 데 유용 할 것입니다 (때로는 너무 많이하지 않았다고 느낄 수도 있지만 모든 변경 사항을 추적하면 일을 원근감있게 유지하는 데 도움이됩니다).
보내는 모든 진행 상황 보고서에 대해 태그를 만듭니다. 다음 보고서에서는 버전을 모두 확인하고 latexdiff를 적용 할 수 있습니다 . 수정을 위해 제출 한 버전 간의 변경 사항을 추적하는 데 유용합니다. 이는 또한 이전 보고서에 대해받은 피드백을 다루 었는지 확인하는 데 도움이됩니다.
마지막 으로 " A successful Git branching model " 을 읽어 보시기 바랍니다 . git 워크 플로우에 대한 매우 짧은 기사입니다. 논문을 작성할 때 동일한 개념을 적용 할 수 있습니다. 예를 들어 실험을 작성하는 경우 브랜치를 만들고 ' 준비 '되면 병합 할 수 있습니다 . 나중에 다시 방문해야하는 경우 관련 변경 사항과 이유를 더 쉽게 확인할 수 있습니다.
내 박사 학위 논문을 작성할 때, ¹ I 문서 및 모든 수치를 관리하기 위해 자식을 사용하고, 내가 그렇게하는 것이 매우 기쁘다, 그것은 쉽게 스크립트를 작성할 수 있습니다하지 적어도 때문에 당신의 progresss를 그래프로 '당신로를 다시 가고;) 내가 찾은 주요 이점은 다음과 같습니다.
- git은 분산 버전 제어 시스템이므로 여러 컴퓨터에서 작업하기 쉽습니다. 데스크톱 컴퓨터에서 랩톱의 최신 버전이 필요한 경우 랩톱에서
pull
직접 작업 할 수 있습니다 . 떠날 때 랩톱으로 이동하여 데스크톱 컴퓨터에서 꺼냅니다. - 여러 컴퓨터에서 작업하는 경우 작업의 최근 백업 (전체 기록 포함)이 효과적으로 있고 추가 백업을 생성하려면 VonC의 답변이 지적한 대로 다른 곳의 새로운 베어 저장소로 푸시 할 수 있습니다 .
- 이전 버전이 안전하게 저장되어 있고 이전 버전을 검색하려는 경우 쉽게 수행 할 수 있으므로 문서를 크게 변경할 수 있습니다.
- 오프라인 일 때 저장소에 커밋 할 수 있다는 것은 매우 유용합니다. 특히 인터넷에 연결되어 있지 않으면 작성하기가 훨씬 더 쉬워지기 때문입니다.) 또한 작업하기 쉽도록 동일한 저장소에 인용 한 모든 논문의 PDF를 보관했습니다. 오프라인에서, 이것은 저장소를 엄청나게 부풀려서 일부는 그것에 대해 조언 할 수 있습니다.
제가 드리는 주요 조언 :
- 자주 커밋하고
git status
필요한 파일을 추가하거나에 나열하여 항상 출력을 비워 둡니다.gitignore
. 중요한 파일이 추적되지 않는 위험을 감수하고 싶지 않습니다. - 결코 사용의 역사를 다시 쓰기 명령 (예를 들어
git rebase
), 안전을과 같은 자식의 위험한 명령을 사용하지 않을 수 있습니다git reset --hard
와git checkout -f
. 아무도 당신의 완전한 저장소를 볼 수 없기 때문에 당신은 히스토리가 어떻게 생겼는지 신경 쓰지 않습니다. 당신의 작업을 잃을 수있는 (혹은 검색을 더 어렵게 만드는) 일을하지 않는 것이 훨씬 더 중요합니다. - 버전 간의 차이점을 확인할 때
--color-words
옵션을 사용하여git diff
. 그렇지 않으면 diff는 줄 기반이되고 LaTeX에서 단락의 서식을 다시 지정하면 실제 변경 사항이 무엇인지 확인하기 어려울 것입니다git diff --color-words
. 줄 바꿈을 무시하고 이전 단어를 빨간색과 새 단어로만 표시합니다. 녹색.
¹ ... LaTeX에서 직접보다는 LyX를 사용 하지만 문제는 본질적으로 동일합니다.
이것은 주로 댓글이라는 뜻이지만 너무 길어서 답변으로 게시하고 있습니다.
석사 논문에 darcs를 사용했으며 과거에 많은 문서화 / 작성 프로젝트에 RCS, CVS, SVN 및 Git을 사용해 왔습니다. 이러한 모든 도구는 내가 원하는 기본 기능을 제공합니다. 변경 사항을 검토하고, 기록으로 돌아가고, 새로운 내용을 작성하기 시작할 때 "실행 취소 지점"을 확인하는 기능입니다.
버전 제어를 사용하여 문서를 작성하기위한 오래되고 시도 된 권장 사항이 있습니다. 텍스트 전용 소스 형식을 사용하는 것은 정상적인 차이를 얻는 데 중요합니다. 또한 내가 선택한 유용한 팁 (Kernighan의 IIRC, 버전 관리에서 Troff 소스 유지에 대해 작성)은 모든 행이 합리적으로 짧도록하는 것입니다. 나는 특정 절이나 관용구를 한 줄에 유지하기 위해 몇 줄마다 입력하는 경향이 있으므로 나중에 특정 세부 사항을 수정하기로 결정하면 차이가 최소화됩니다.
힘내가 작동합니다. 라텍스는 효과적인 소스 코드이므로 완벽하게 괜찮습니다.
즉, Git은 굉장하지만 약간 가파른 학습 곡선을 가지고 있습니다. 여러 사람과 공동 작업하고 다양한 이력을 처리하는 등 많은 작업을 허용하기 때문입니다. 정말 큰 장점은 충돌을 병합하는 것입니다 (파일을 변경하고 다른 사람이 파일을 변경하고 우리 둘 다 서버에 업로드 / 커밋을 시도하면 어떻게됩니까?).
논문을 버전 화하려는 경우 여러 기록 사례는 말할 것도없고 충돌하는 병합 사례 (당신이 편집하는 유일한 사람이기 때문에)를 칠 가능성도 거의 없습니다.
SVN과 같이 더 간단한 것을 사용합니다. 제가 설명한 두 가지 작업을 수행하기에는 더 나쁘지만 귀하의 필요에 맞고 배우기 쉽습니다.
또한 git은 현재있는 폴더의 .git 파일에 모든 것을 저장합니다. 해당 폴더를 삭제하면 데이터가 사라집니다.
- 병합 워크 플로 (귀하의 경우에는 그렇게 많이 필요하지 않아야 함)
- 게시 워크 플로 (원격 저장소로 푸시)
로컬 .git 리포지토리를 사용하면 이전 버전과 비교할 수 있습니다 (편리 할 수 있음).
하지만 DVCS의 이점은 다음과 같은 경우입니다.
- 원격 저장소 (또는 백업 목적으로 번들 )에 푸시를 통해 작업을 저장합니다.
- you synchronize your work between two different PC (like in "How to push a local git repository to another computer?" or in "git server between laptop and PC (MS Windows 7)").
Then, once the sync is done (through agit push
), you can take your second environment completely off-line, and still benefit from the full history of your repo.
That is where a DVCS matters in your case.
참고URL : https://stackoverflow.com/questions/7775881/using-git-for-writing-thesis
'Programing' 카테고리의 다른 글
@import 대 링크 (0) | 2020.12.13 |
---|---|
정의되지 않은 동작을 감지하는 C ++ 구현? (0) | 2020.12.13 |
MSVC를 대체하기 위해 Windows에서 사용할 가치가있는 GCC? (0) | 2020.12.13 |
MySQL의 트리 구조 테이블을 단일 쿼리로 깊이에 관계없이 쿼리 할 수 있습니까? (0) | 2020.12.13 |
모바일 크롬에서만 SSL 인증서“err_cert_authority_invalid” (0) | 2020.12.13 |