Git : 추가 vs 푸시 vs 커밋


115

어떤 자식 사이의 차이는 add, push그리고 commit?

SVN에서 약간 혼란스러워합니다. "업데이트"는 항목을 '추가'하고 커밋은 "푸시"를 수행하고 '추가'합니다.

git에는 모든 다른 기능이 있습니다. 귀하의 경험에 대한 설명을 기대합니다.


답변:


163
  1. git add수정 된 파일을 큐 추가하여 나중에 커밋 합니다. 파일이 커밋되지 않았습니다.

  2. git commit추가 된 파일을 커밋하고 로그가있는 새 개정판을 생성합니다 ... 파일을 추가하지 않으면 git은 아무것도 커밋하지 않습니다. 두 작업을 함께 결합 할 수 있습니다.git commit -a

  3. git push 변경 사항을 원격 저장소로 푸시합니다.

git 치트 시트 의이 그림 은 작업 흐름에 대한 좋은 아이디어를 제공합니다.

여기에 이미지 설명 입력

git add제안 된 커밋 방법이 결합 되었기 때문에 그림에 나타나지 git commit -a않지만 git add변경 블록에 정신적으로 추가 하여 흐름을 이해할 수 있습니다.

마지막으로 push별도의 명령이있는 이유는 git의 철학 때문입니다 . git분산 버전 관리 시스템이고 로컬 작업 디렉토리 저장소입니다! 커밋 한 모든 변경 사항은 즉시 반영되고 기록됩니다. push작업중인 모든 작업을 마쳤을 때만 원격 저장소 (다른 사람과 공유 할 수 있음)를 업데이트하는 데 사용됩니다. 이것은 네트워크 오버 헤드없이 로컬로 작업하고 변경 사항을 저장하고 모든 커밋이 아닌 원할 때만 업데이트하는 깔끔한 방법입니다. 이것은 간접적으로 더 쉬운 커밋 / 브랜치 등 (왜 안 되겠습니까? 비용이 얼마나 듭니까?)을 초래하여 저장소를 엉망으로 만들지 않고 더 많은 세이브 포인트로 이어집니다.


그렇다면 로컬에서 커밋 한 다음 원격 서버로 푸시하거나 원격 저장소에 작업을 가져 오기 위해 먼저 커밋 한 다음 푸시해야합니까?
Andrew S

2
먼저 로컬 저장소 (로컬 머신에서)를 업데이트하는 커밋 ( "git commit")을 수행 한 다음 원격 저장소 (예 : github 서버에서)를 업데이트하는 서버 ( "git push")로 푸시해야합니다. )
Romain

나는 힘내에서 "정신적으로 추가"기능을 좋아한다!
Junchen Liu 2015 년

1
자주 커밋 할뿐만 아니라 자주 푸시하는 것이 좋습니다. 이것은 하드 드라이브가 충돌 할 때 작업을 보호합니다.
CCC

86

git add 변경 사항을 선택

git commit 로컬에서 변경 사항 기록

git push 공유 변경


22
  • git add 커밋 할 준비가 된 개체의 스테이징 영역 인 Git 인덱스에 파일을 추가합니다.
  • git commit색인의 파일을 저장소에 커밋하고 git commit -a수정 된 모든 추적 파일을 색인에 먼저 추가하는 바로 가기입니다.
  • git push 보류중인 모든 변경 사항을 분기가 매핑 된 원격 저장소 (예 : GitHub)로 보냅니다.

Git을 이해하려면 문서를 훑어 보는 것보다 더 많은 노력을 투자해야하지만 그만한 가치가 있습니다. Git 명령을 Subversion에 직접 매핑하려고하지 마십시오. 대부분의 명령에는 직접적인 대응이 없습니다.


누군가는 로컬과 원격 github의 차이점을 설명해야합니다. 로컬 및 원격에있는 것. 이것은 당신이 찾아야하는 열쇠입니다
메디 Amrollahi

12

나는 'add'가 실제로하는 일에 대해 혼란 스러웠다. 여기에 추가하고 싶은 책 Git Pro에서 매우 계몽적인 단락을 읽었습니다.

“Git은 git add 명령을 실행할 때와 똑같이 파일을 스테이징합니다. 지금 커밋하면 git add 명령을 마지막으로 실행했을 때와 같은 benchmarks.rb의 버전은 git commit을 실행할 때 작업 디렉토리에 표시되는 파일 버전이 아니라 커밋으로 이동하는 방식입니다. git add를 실행 한 후 파일을 수정하는 경우 git add를 다시 실행하여 파일의 최신 버전을 준비해야합니다.”

발췌 : Chacon, Scott. "Pro Git." Springer, 2009-08-19T00 : 00 : 00 + 00 : 00. iBooks. 이 자료는 저작권으로 보호 될 수 있습니다.


7

add는 git에게 파일 추적을 시작하도록 지시합니다.

commit은 로컬 저장소에서 현재 변경 사항을 커밋합니다.

push는 로컬 저장소를 업스트림으로 푸시합니다.



5

많은 GIT 비밀에 대한 아주 좋은 PDF .

Add 는 svn의 add와 동일합니다 (하지만 때때로 파일이 해결 된 것으로 표시하는 데 사용됨).

Commit 은 svn과 동일하지만 로컬 저장소에 변경 사항을 커밋합니다.


2
이제 svn add 및 commit을 찾아야합니다. 내 큰 두려움 : 그들의 문서는 나를 git add 및 commit으로 참조 할 것입니다. 그리고 lord_t는 해당 문서의 작성자입니다.
eric

질문 작성자는 SVN에 대해 알고 있었으므로 svn의 명령을 알고 있다고 가정했습니다.
lord_t 2010

0

add -in git은 커밋 할 파일을 git에게 알리는 데 사용되며 파일을 스테이징 영역에 넣습니다.

commit- in git은 파일을 로컬 머신에 저장하는 데 사용되므로 변경하거나 파일을 삭제하더라도 커밋 된 파일을 복구 할 수 있습니다.

push-파일을 로컬 시스템에 커밋하면 로컬 시스템이 손실되거나 손상되는 경우 파일이 손실 될 가능성이 있습니다. 파일을 안전하게 유지하거나 파일을 공유하기 위해 일반적으로 파일을 원격에 유지합니다. Github와 같은 저장소. 원격 리포지토리를 절약하기 위해 푸시를 사용합니다.

예 index.html이라는 파일 스테이징 git add index.html

준비된 파일 커밋 git commit -m 'name of your commit'

Github git push origin master에 파일 푸시

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.