이 답변 은 가장 빠른 방법 git
을 배우는 방법이 아니라 상급 프로그래머가 관심을 갖도록하는 방법을 다루려고 git
합니다. 우수한 git book 이 훌륭하거나, 많은 튜토리얼 (=> Google)입니다. 이 답변에 대한 좋은 링크는 Git은 순전히 기능적인 데이터 구조 이거나 특히 git이 데이터를 저장하는 방법 입니다.
나는 이것에 대해 다소 황량한 견해를 가지고 있습니다. 나는 정확하게 당신의 신발에 있었어요-나는 git
대단하고 팀을 멀리 svn
하고, 직면하고, 작은 결과 를 바꾸고 싶었습니다 . 제 경우에는 적극적으로 자신의 인식을 바꾸고 사람들을 받아들이는 것만으로 "행복을 강요"할 수 없습니다. 사람들은 컴퓨터가 아니며 프로그래밍하기가 매우 어렵습니다. 나는 시도한 것에 대해 여전히 행복하다. 그것은 내가하는 일과 직업 생활에서하고 싶지 않은 일을 다소 부드러운 방식으로 보여 주었다.
새로운 것들이 관여 할 때 동기를 부여하기 시작하는 사람들이 있고, 동기를 부여하는 사람들이 있습니다. 이것은와는 아무런 관련이 git
없지만, git
특히 "만약 svn
괜찮다 면 왜 사용해야 합니까?"라는 효과가 있습니다. 이는 엄청난 심리적 장벽입니다.
또한 실제로 git
데이터를 처리하려면 추상적 인 데이터 구조에 많은 관심을 기울여야합니다. 그것은 믿을 수 없을 것 같지만, 내 경험상 전혀 관심이없고 단순한 배열보다 복잡한 요소에 의해 지루하고 부담이 많은 프로그래머가 있습니다. 그들이하고있는 일을해야하는지 여부를 앞뒤로 논쟁 할 수 있지만 그것이 바로 그 일입니다.
사람들이 관심이 없다면 이해하지 못할 것입니다. 평범하고 단순합니다. 나는 지식이 빠지지 않고 학교에서 나쁜 성적의 주된 이유가 무관심이라고 내기를했습니다.
즉, 아래에서 위로 쌓은 지식을 바탕으로 적용 할 수있는 커리큘럼이 있습니다. 그것은 나를 위해 일하지 않았지만, 당신은 그것을 자신의 롤을 영감으로 취할 수 있습니다.
GUI
다음 접근법은 조치에 대한 GUI 지원이 반드시 필요한 것은 아니지만 ( git add
hello world 저장소에서 ...) 처음부터 저장소를 시각화하기위한 GUI를 갖는 것이 엄청나게 도움이됩니다 . 사용할 것을 결정할 수 없다면 gitk
최후의 수단으로 사용하십시오. 여러분의 시각적 편집기를 사용하는 경우 git
GUI 구성 요소를 찾으십시오 .
(정적) 데이터 구조가 핵심
내부 데이터 유형 (블롭, 트리, 커밋, 주석이 달린 태그, 마지막 단계는이 단계에서 전혀 중요하지 않음)과 그 구조에 대해 설명하는 것으로 시작하십시오. 화이트 보드 / 연필로 쉽게 할 수 있습니다. 나무는 절대로 변경할 수 없으므로 그리기가 쉽습니다. 문자 그대로 항상 물건을 추가 할 수 있습니다. 새로 만든 로컬 리포지토리에서 재생 세션을 수행 git cat-file
하여 실제 개체를 조사하여 실제로 광고 된 것처럼 사소한 것임을 나타낼 수 있습니다 .
그들이 이해하도록 도울 수 있다면
- ... 역사상 말 그대로 3 가지 유형의 객체가 있습니다.
- ... 대부분의
git
부속 명령은 사소한 조작 (기본적으로 어딘가에 새 커밋을 추가 함)을 사용하여 이러한 오브젝트를 한 가지 방법으로 "마사지"합니다.
- ... 모든 것이 쉽게 할 수있다 알 권리와 당신의 앞에
ls
와 git cat-file
...
그런 다음 실제로 저장소에있는 내용을 정신적으로 번역합니다. 이 시점에서, seniours는 수 의 내부가 기억 svn
(또는 "재 통합"나뭇 가지와 같은과? 지금 SVN 저장소 내부 잠금 장치에 문제가 있었다) 비전 마법, 그리고이 수 그들에게 약간의 동기를 부여 단지.
하나의 문제는, 특별히 사용 사람들과 svn
항상 하나 (객체가 아닌 행동을) 저지한다는 생각에 익숙해하는 것입니다 전체 디렉토리 트리. 에서 svn
, 사람들은 개별 파일을 커밋하는 데 사용됩니다. 근본적으로 다른 접근법입니다. 아, 그리고 "commit"이라는 동일한 용어가 정적 객체와 둘 다에 사용된다는 사실도 도움이되지 않습니다.
svn
남자의 또 다른 문제 svn
는 나무가 아닌 선형 이력 을 사용 한다는 것입니다. 다시 말하지만 이것은 크게 다릅니다. 이 시점에서 이러한 차이 를 많이 지적해야합니다 .
구조 측면에서 설명 된 동작
이들이 git
저장소를 구성하는 부분을 이해했으면 개별 부속 명령이 해당 기능과 관련하여 수행하는 작업을 정확하게 표시해야 합니다git
.
내가 얘기하고 add
, commit
로컬 작업 디렉토리와 단계 (그들이 작업 디렉토리가 저장소와 동일하지 않습니다 스테이징 영역과 동일하지 않습니다 알고 있어야합니다)와 함께한다.
때 그들은 이러한 명령은 단순히 나무 성장하는 것을 이해 (다시,이 단계에서, 구성 3 종류의를 - 모양, 나무,뿐만 아니라 커밋 커밋), 당신이 먼저 할 수있는 git push
및 git pull
빨리 감기 모드 (! ) git
문자 그대로 객체를 밀고 있음을 보여주기 위해 해시는 실제로 콘텐츠 해시 일 뿐이며 파일 시스템 복사 명령 등 으로이 내용을 쉽게 복사 할 수 있습니다.
분명히, 이러한 명령의 불필요한 옵션에서 멀리 떨어지 git add hello.txt
십시오. 우리는 여기서 이야기하고 있습니다.
지점
분기 svn
는 완전히 다르기 때문에 사람들에게 특히 어렵습니다 . svn
모델은 훨씬 기본적으로 시각화하는 것이 존재하지 않기 때문에, 시각화하기 쉬운 - 그것은 일반보기입니다. git
모델을 너무 많이하지. 시작부터 브랜치와 태그가 어딘가를 가리키는 "스티커 노트"라는 사실을 인식하고 정적, 불변의 히스토리와 관련하여 실제로는 존재하지 않는지 확인하십시오.
그런 다음 쉬운 예를 들어 실제로 할 수있는 일을 보여주는 예를 들어보십시오. 당신이 익숙해 져있는 것처럼 git
, 동기 부여를 찾는 데 어려움이 없어야합니다. 나무가 자라는 방식으로 항상 이것을보아야합니다.
그들이 그것을 가지고 있다면, 당신 git pull
은 실제로 어떻게 설명 할 수 있습니다 git fetch && git merge
; 모든 리포지토리에 실제로 정확히 동일한 객체 가 포함되는 방법 ( git 객체 디렉토리 내부에서 git fetch
물건을 복사하는 것과 거의 동일 함 scp
) 등.
아마, 지금까지 당신이 그들의 관심을 불러 일으키지 않았다면, 당신은 또한 포기할 수 있지만, 그들이 지금까지 얻을 수 있다면, 그들은 모든 정신적 도구를 사용할 수 있으며, 거의 없어야합니다. 더 이상 걱정이 없습니다. 나머지는 (git workflow ...) 내리막 길이어야합니다.
마지막 말
이것은 많은 노력처럼 들리지만 실제로 있습니다. 이것을 "우리는이 프로젝트에 필요합니다"라고 팔지 말고 "이것은 개인적으로 개발하는 데 도움이되고 앞으로의 모든 상호 작용에 도움이 될 것입니다"라고 판매하지 마십시오. 이를 위해서는 많은 시간이 필요 하며 시간은 돈입니다. 이에 대한 관리 승인이 없다면 가치가 없을 수도 있습니다. 상사와상의해야 할 수도 있습니다.
당신이 그것을 이해하지 못하는 것처럼 보이는 개발자들을 가르치기를 포기하기로 결정했지만 git
, 앞으로 반드시 사용해야 할 경우, 모든 상호 작용을 git
요리 스크립트 또는 GUI 로 모든 상호 작용을 명령으로 대체하는 것을 고려하십시오 git
. 스크립트에서 모든 오류 제어 등을 따르고 작동하도록하십시오.