행동에 사용 된 단어의 의미를 찾을 수 없어 git을 이해하기 어렵습니다. 사전에서 “stage”의 의미를 확인했는데 소스 제어 개념과 관련된 의미가 없습니다.
git에서 “stage”는 무엇을 의미합니까?
댓글
답변
파일 스테이지 커밋을 위해 잘 준비하는 것입니다. 색인이있는 Git을 사용하면 마지막 커밋 이후에 수행 한 변경 사항의 특정 부분 만 커밋 할 수 있습니다. 하나는 완료되고 다른 하나는 완료해야하는 두 가지 기능에 대해 작업 중이라고 가정합니다. 커밋을하고 집에 가고 싶지만 (드디어 5시) 아직 완료되지 않은 두 번째 기능의 부분을 커밋하고 싶지 않습니다. 첫 번째 기능에 속한 부분을 준비합니다. 이제 커밋은 첫 번째 기능이 완료된 프로젝트이고 두 번째 기능은 작업 디렉토리에서 여전히 작업 중입니다.
댓글
- 좋은 설명입니다. 배포 된 git은 분명히 두 기능을 모두 커밋 할 수 있습니다. 커밋은 로컬이므로 (처음에는) 그래도 수정 사항을 기능 당 하나의 커밋으로 분할하고 스테이징이 다시 유용 할 수 있습니다.
- 동의합니다 ‘이 작업을 위해 스테이징이 필요한 이유를 이해하지 못합니다. 관련 파일 만 커밋하여 HG 또는 SVN으로이 작업을 수행 할 수 있습니다.이 기능은 주로 명령 줄 작업을 고집하는 사람들을 돕기 위해 설계된 것 같습니다. ‘ 더 어렵습니다. o 커밋중인 항목에 대한 확인란을 선택합니다.
- @jiggy git을 사용하면 파일의 일부 를 준비 할 수 있습니다. 파일을 스테이징하고 추가 수정 한 다음 스테이징 상태를 커밋 할 수도 있습니다. Subversion에서는 ‘이 작업을 수행 할 수 없습니다.
- @jiggy SVN에서는 커밋 할 파일 / 파일 부분을 선택하는 시간 사이에 무언가가 있습니다. 커밋 메시지 작성을 마치면 커밋하기 위해 선택한 파일 / 부분이 기록됩니다. 명시 적으로 언급되지 않을 수도 있고 저장소의 실제 부분이 아닌 SVN 클라이언트에서 구현 될 수도 있고 메모리의 일부 플래그 일 수도 있지만 이는 SVN ‘입니다. 단계. 저는 ‘ HG를 보지 않았지만 같은 일을하는 것 같습니다. git과 다른 점은 git이 사물임을 인식하고 디스크에 기록하고 사용자가 직접 액세스 할 수 있도록한다는 점입니다.
- 두 번째 화살표 ” 그림의 스테이지 파일 “은 오해의 소지가있을 수 있습니다. ” 스테이지 덩어리 “가 더 정확할 수 있나요?
답변
지금까지 모든 사람들이 “공식적인”방식으로 대답 했으므로 은유의 힘으로 학습을 향상시키기 위해 대안으로이 작업을 수행하겠습니다.
스테이징 영역 은 다음과 같습니다.
- 커밋하려는 파일 캐시
- 시리즈가 아닙니다. 로드 한 작업 물을 저장소로 옮길 준비가되어있는 덤프 트럭입니다.
- 선택한 파일이 마법과 함께 돌로 변하고 마법처럼 이동할 수있는 마법의 장소 원하는대로 저장소
- 파일이 저장소로 즐겁게 이동 (또는 되돌리려면 떨어질 수있는 노란 벽돌 길)
- 파일이있는 항구의 가상 장소 시멘트 신발 한 켤레를받은 다음 보관소 바다로 던져집니다.
- 도서관 리셉션 데스크, 도서관에 제출할 파일을 사서가 준비 할 수 있도록 거기에 보관합니다.
- 침대 아래로 밀기 전에 물건을 넣는 상자입니다. 침대는 이전에 넣은 상자의 저장소입니다.
- 파일이있는 저장소 창고에 들어가기 전에 파워 로더
- 전기 드립 커피 메이커의 필터, 파일이 커피 가루와 같으면 커밋 된 파일은 추출 된 커피입니다.
- 금고 옆에있는 Scrooge McDuck의 사무실, 파일은 다음과 같습니다. 동전이 그의 거대한 돈통 금고에 들어가기 전에
- 애완 동물 가게, 애완 동물을 집에 가져 오면 당신은 “약속”됩니다
그것이 마법적인 !
댓글
- 비유를 좋아합니다. ; way to go bud ^ _ ^
- 마지막 비유가 마음에 듭니다.
- 이 대답은 ” 절망적으로 ” git index = git staging의 형이상학을 설명하려는 일반적인 시도의 공간에 필요합니다. 솔직히 저는 ‘ 또한 Linus가 색인 영역을 원할 때 어떤 생각을했는지 알고 싶습니다. 마음에 들지만 ‘이 제품이 좋은 이유와 가장 효과적으로 사용하는 방법에 대해 더 잘 이해하고 싶습니다.
Answer
스테이징은 git에서 커밋 프로세스 전 단계입니다. 즉, git의 커밋은 스테이징과 실제 커밋의 두 단계로 수행됩니다.
변경 세트가 스테이징 영역에있는 한 git에서는 원하는대로 편집 할 수 있습니다 (스테이징 된 파일을 다른 버전의 스테이징 파일, 스테이징에서 변경 사항 제거 등).
깨진 은유 시간 :
이전 아파트에서 새 아파트로 물건을 가져 오기 위해 이사에게 전화하는 시나리오를 고려하십시오. 그러기 전에 물건을 살펴보고, 가져갈 물건과 버릴 물건을 결정하고, 가방에 포장하고 메인 복도에 두십시오. 이사하는 사람들이 와서 복도에서 (이미 포장 된) 가방을 꺼내서 운반합니다. 이 예에서는 이사자가 물건을 가져 오기 전까지 모든 것이 스테이징입니다. 어디로 갈지, 어떻게 포장할지 등을 결정합니다 (예 : 이사자가 물건을 넣기 전에 물건의 절반을 버릴 수 있음을 결정할 수 있습니다. ” s 부분).
기술적 인 관점에서 스테이징은 모든 작업을 실패 할 수있는 것 (스테이징)과 실패 할 수없는 것 (커밋)으로 분할하여 트랜잭션 커밋도 지원합니다.
Git의 커밋은 스테이징이 성공한 후 트랜잭션 방식으로 구현됩니다. 스테이징의 여러 단계가 실패 할 수 있습니다 (예 : 커밋해야하지만 HDD가 99.9999 % 꽉 찼고 git에 공간이 없습니다. 이것은 스테이징에 실패하고 (레포지토리는 부분 커밋으로 인해 손상되지 않습니다) 스테이징 프로세스는 “커밋 기록에 영향을주지 않습니다 (“오류가 발생해도 리포지토리를 손상시키지 않습니다).
댓글
- … 지금까지 투표 수가 거의 없습니다.
답변
파일을 준비하는 것은 커밋을 준비하는 것입니다. git은이 작업을 사용자 제어에 노출하기 때문에 부분 커밋을 생성하거나 파일을 수정하고, 스테이징하고, 다시 수정하고, 커밋하거나 원래 수정 사항으로 되돌릴 수 있습니다.
스테이징을 사용하면 버전 제어에 접근하려는 정확한 방법 을 더 세밀하게 제어합니다.
답변
다른 훌륭한 답변에 추가하려면 “stage”의 이름은 다음과 같습니다.
사전에서 스테이지의 의미를 확인했는데 소스 제어 개념과 관련된 의미가 없습니다.
영어로 “to stage”는
조직 및 참여 (공개 이벤트)를 의미 할 수 있습니다. UDF 지지자 소피아에서 데모를 상연했습니다.
(출처 : http://oxforddictionaries.com/definition/stage )
git 기능의 “staging”이라는 이름은 다음과 같은 의미에서 파생됩니다. 스테이징 할 때 커밋을 준비하고 구성합니다.물론 커밋은 성능과 같지는 않지만 VCS에서 중요한 이벤트 인 입니다. :-).
댓글
- ‘ 스테이징 게시물 li의 사용과 더 가깝다고 생각했습니다. >
- 동의합니다. 또한 ” 프로세스 또는 개발의 시점, 기간 또는 단계입니다. ”
- 또한 ‘ 스테이징 서버 ‘는 개발과 개발 사이에 ‘하는 서버를 설명하는 데 사용되는 매우 일반적인 용어입니다.
답변
“단계”는 체크인 과정에서 기술적으로 필요한 중간 단계입니다. 즉, 저장소에 추가 할 변경 사항을 수집합니다. Git의 작성자는이 단계를 다른 VCS가 커밋 프로세스의 일시적인 부분으로 만드는 곳에서이 단계를 표시하고 영구적으로 만들기로 결정했습니다. 그래서 git이 제공하는 옵션 일뿐입니다. 왜 안될까요?
내가보기에 git “stage”가 다른 VCS가 제공하지 않는 가장 중요한 것은 파일을 체크 포인트하는 데 사용할 수 있다는 것입니다. 이는 사실상 이름이 지정되지 않은 주석이없는 로컬 커밋으로 다음과 같은 중간 단계를 제공합니다. 모든 작업을 완료하고 저장소에 영구적으로 커밋하고 로컬 저장소에 아무것도 저장하지 않습니다.
예를 들어 기능이 부분적으로 완료되었다고 가정 해 보겠습니다.이 기능은 안정적인 상태이고 모든 테스트를 통과하며 프로덕션에 들어갈 수 있지만 더 많은 작업을 수행해야합니다. 모든 변경 사항을 스테이징 한 다음 계속해서 기능 작업을 수행 할 수 있습니다.
나중에 스테이징 한 것을 커밋 (그리고 해당 커밋을 원격 저장소로 푸시)하거나 추가 할 수있는 옵션이 있습니다. 스테이징 영역에 대한 새로운 변경 사항을 한 번에 커밋하거나 새 변경 사항 만 실행 취소하고 작업 디렉토리를 변경 사항을 스테이징 할 때의 상태로 되돌립니다.
완전히 가능합니다. 준비 영역을 거의 건너 뛰고 준비 영역이 유용한 개념이 아니라면 git commit
옵션에 -a
옵션을 사용합니다. 많은 사람들이 스테이징을 건너 뛰고 GUI 도구도 일반적으로이를 허용합니다.
댓글
- ” other VCS don ‘ t ” -왜 그렇게 생각합니까? Perforce의 선반이 작동하는 것 같습니다. 당신이 묘사하는 것, 그리고 몇 가지 추가 종소리와 휘파람으로도
- @gnat 예, 물론입니다 다른 많은 VCS는 스테이징과 같은 기능을 제공합니다. ” 다른 VCS ” 란 git과 같은 것이없는 ‘ 다른 VCS를 의미합니다. ‘의 단계, 이것이 OP가 언급 한 것이기 때문입니다.
- 이 답변은 위의 모든 것보다 훨씬 낫다는 것을 발견했습니다. ‘는 스테이징이 존재하는 이유 ( 기술적으로 필요 ), 출처에 대한 설명 ( Git ‘의 작성자는이 단계를 가시적이고 지속적으로 만들기로 결정했습니다 ), 개인적으로 좋은 정의라고 생각하는 것을 추가했습니다 ( 이름이없고 주석이없는 중간 커밋 ). . 그러나 스테이징의 기원에 대한 설명의 출처를 인용하여 개선 할 수 있다고 생각하고 ‘의 기술적으로 필요한 이유에 대해 좀 더 자세히 설명합니다. . @OldPro
- git가 처음부터 설계되었으므로 일반화 된 ” 분기 “의 일부일 수 있습니다. 이 경우에는 다른 사람들에게 보이지 않는 개념입니다. 마찬가지로 ” stash “는 branch. ” 그런 다음 원하는 수의 ” 스테이징 선호합니다.
답변
대부분의 다른 버전 제어 시스템에는 두 곳이 있습니다. 데이터 저장 : 작업 복사본 (현재 사용중인 폴더 / 파일) 및 데이터 저장소 (버전 제어에서 변경 내용을 압축하고 저장하는 방법을 결정 함). Git에는 세 번째 옵션 인 스테이징 영역 (또는 인덱스)이 있습니다. 기본적으로 어떤 변경 사항을 배송할지 결정할 수있는 하역장입니다.
출처 : http://gitready.com/beginner/2009/01/18/the-staging-area.html
댓글
- 이것은 ‘ 이전 6 개 답변보다 큰 내용을 추가하지 않는 것 같습니다.
- 색인을 언급합니다. 그리고 매우 철저한 기사에 대한 언급. 찬성. BTW, 위의 일부 답변은 단지 농담입니다.
답변
내 이해는 로그인 기능을 개발 중이고 완료하는 데 연속 5 단계가 필요하다고 가정합니다. 따라서 여기서 스테이징은 1 단계 단계에서 수행 한
단계를 수행하는 데 도움이됩니다.
2 단계에서 완료되었으므로 이제 1 단계와 2 단계가 모두 올바른 단계입니다.
3 단계로 엉망이됩니다. 문제 체크 아웃 2 단계 인 최신 단계 단계
5 단계를 모두 완료하면 기능이 완료되었음을 의미하는 동일한 방식으로 이제 커밋을 수행합니다.
댓글
- 이것이 ‘ 이전에서 이루어지고 설명 된 포인트에 대해 실질적인 내용을 추가하지 않는 것 같습니다. 9 개의 답변
- 네 말이 맞습니다. 간단하고 달콤하게 설명하려고 노력했습니다
- 그리고이 개념을 실제로 사용하고 싶은 느낌을 설명하려고했습니다.
- 여기에서 토론을 살펴보세요. 두 번째 TL; DR 답변이 허용 되나요? (이 답변은 이전 답변과 비교하여 FWIW가 허용하지 않음 ‘ 저에게 단순하거나 달콤 해 보이지 않습니다)
- 감사합니다. 질문이 있습니다. 나는 많은 답변을 보았고 대부분이 너무 복잡합니다. 맞습니다.하지만 한 번에 이해하기 어렵습니다. ‘ 어떤 것도 간단한 방법으로 설명 할 수 없다면 제대로 배우지 않았거나 ‘ 사용 방법을 모릅니다. 그래서 지금은 요약이나 대답하는 간단한 방법을 넣는 것이 좋지 않습니까 ??
git add file.ext
를 수행하거나git add .
는 수정 된 파일과 추적되지 않은 모든 파일에 영향을줍니다. 이러한 방식으로 추가 된 파일은 ” 스테이지 “라고하며 다음 커밋 “. 커밋은 생성 된 작업의 스냅 샷입니다.git commit -m "I wrote something"
.