지옥에서 온 Git

Stage area

수업소개

git은 commit 전에 add를 꼭해야 합니다. 그 이유는 선택적으로 파일을 버전에 포함시키기 위해서 입니다. 여기서는 이에 대한 설명을 합니다.  

수업

댓글

댓글 본문
  1. eunso
    완료
  2. 믹믹이
    22.02.01 완료
  3. 주니어개발자
    cp f1.txt f2.txt
  4. 김수현
    [ git add 취소 명령 ]

    가능합니다. 이곳에 강의가 있을 듯 합니다.
    구글 검색 : 'git add 취소' 하니 나옵니다.
    https://tinyurl.com/y3oobqgt

    git reset : 전체 취소 명령
    git reset 파일명 : 해당 파일만 취소

    이것을 참고 했습니다
    https://g4world.tistory.com/380

    소스트리라는 gui 프로그램을 사용하면 더 쉽습니다.
    소스트리를 주로 사용하다보니 위의 내용이 틀린 내용일 수 있습니다.
    (틀리면 댓글 부탁 드립니다)
    소스트리를 하더라도 git명령이 필요할 때가 있습니다.
    에러가 나는 경우 인터넷 검색해서 git명령으로 해결할 수도 있습니다.
    이해가 어려우신 분은 소스트리라는 gui프로그램을 설치하여 사용해 보시고...
    이곳 git명령을 배우시면 보다 쉽게 이해할 수 있을 것으로 생각합니다.
    https://g4world.tistory.com/380
    소스트리프로그램 사용하여 git을 사용해본 후 이곳 강의 공부 >> 보다 쉽게 이해할 수 있습니다.
    대화보기
    • 김수현
      [ add와 커밋 ]
      커밋(commit)은 최종적으로 버젼을 저장하는 것입니다.
      commit은 이전시간에 강의한 내용입니다.
      https://opentutorials.org......202

      그러면 왜 처음 부터 커밋하면되지 번거롭게 중간에 add라는 과정을 거쳐서 커밋을 하는 것일까?
      잘 생각해보면 알 수 있을 것 같습니다.
      커밋은 의미있는 지점을 저장하는 것입니다. 그런데...
      의미있는 지점을 저장할 때 여러개의 파일이 변경되어 있을 수 있는데
      모두가 다 의미 있는 지점이라면 커밋하면 되지만...
      그중에 몇개의 파일은 의미가 없는 지점에 있을 수 있을 것이고...
      그 파일들은 커밋에서 제외시켜야 할 수도 있을 것입니다.
      즉, 커밋하여 계속 관리하여야 할 파일중에서도
      커밋하려는 때에, 커밋이 지금 필요한 파일과 지금은 커밋에서 제외할 파일을 구분할 필요가 있게 됩니다.

      또 다른 경우도 생각해 볼 수 있을 것 같습니다.
      3개의 파일이 의미있는 변경이 있는 경우라 하더라도...
      한꺼번에 커밋을 하나 만들어도 되겠지만...

      (참고 : 소스트리라는 gui 프로그램으로 git을 사용하는 예입니다.
      https://www.youtube.com......ZWw)

      따로 따로 3개의 커밋을 만들어야 할 경우도 있을 것입니다.
      이럴 경우에도 1개씩만 별도로 add > commit을 반복하여 커밋을 할 수도 있을 것입니다.

      (참고 : 소스트리라는 gui 프로그램으로 git을 사용하는 예입니다.
      https://www.youtube.com......TyU)

      이러한 관계로 지금 커밋할 파일을 add하고 다음 명령인 커밋을 통하여 add한 파일에 대해서만 커밋을 하게 하는 기능이 필요한 것입니다. 그래서 커밋과정을 2단계(add > commit)로 분리시킨 것입니다.

      이점에 대해 틀린 점이 있다면 댓글 부탁드립니다.
    • 오선기
      stage area 에 올라가 있는것을 다시 원래 local 로 원복시킬수는 없나요...?
    • 이민철
      완료!
    • 이수빈
      완료했습니다!
    • YesterdayKite
      완료
    • 유리수
      stage에 먼저 파일을 올리는 이유는 여러 파일을 따로따로 commit하기가 힘들기 때문 아닐까요?

      예를 들어 제가 어떤 프로젝트에 포함된 파일 3개를 업데이트했고, 아직 수정을 끝내지 않은 파일이 하나 더 있다고 하면,
      그 세 파일만 stage에 올려 commit으로 한번에 버전을 수정할 수 있는 거죠. 수정을 끝내지 않은 파일을 그대로 두고요.

      각각 add한 다음 커밋하는게 그냥 각각 커밋하는것보다 더 번거롭긴 하지만, 그 세 개의 파일이 모두 서로 관련되어 있다면 한꺼번에 commit하는 게 보기에도 좋고 나중에 프로젝트의 어떤 부분을 언제 업데이트했는지 보기가 편할 것 같네요.
      대화보기
      • supernet
        완료!!
      • Jihoon Park
        stage area는 애초에 없는 명령어입니다. ㅎ 이고잉님이 설명을 위해 적으신 겁니다 ㅎ
        대화보기
        • Stage area에서 기다렸다가 commit을 선택적으로 할수 있다는 건 머리속으로는 이해가 되는데 왜 그런 프로세스를 사용하는지는 아직 이해가 안 되네요...
        • 빽토리얼
          git에서 add란 명령어를 사용하는 이유: commit를 선택적으로 할 수 있기 때문!
          modified 된 여러 파일이 있을 시 add를 통해 선택적으로 골라진 파일만 stage area로 올라가고 git commit를 통해 stage area에 올라간 파일만 선택적으로 커밋을 해줘 버전을 업데이트 할 수 있습니다.
        • 사겅이
          stage area
        • RAPH
          stage area 는 실제 명령어는 아니고 이고잉님이 설명을 위해서 입력하신 거에요.
          영상 속 설명처럼 실제 commit이 되기전 대기열에 있는 목록들을 나타내주는 공간이고
          stage area 에서 unstage상태로 돌리려면 git reset HEAD <filename> 을 입력해주시면 됩니다.
          대화보기
          • 댕댕이
            10/15 감사합니다.
          • 같은 방법으로 따라하고 있는데

            stage area 에서 bash: stage: command not found 에러가 나네요 ㅠ.ㅜ...어떤걸 고치면 될까요?
          • jenny
            수강완료!
            add 하면 stage area로! (커밋대기상태)
          • seokhee
            너무 쉽고 재밌자나~~~
          • PassionOfStudy
            add는 stage area에 임시 저장된다고 생각할 수 있는거군요
          • Zeroam
            저도 궁금해서 찾아 봤습니다.
            윈도우 환경에서는 줄바꿈 문자를 CR(carriage return) LF(line feed) 문자를 둘 다 사용하고, Mac과 Linux는 LF 문자만 사용합니다. 윈도우와 유닉스가 서로 협업하는 환경에서는 이게 문제가 될 수 있기때문에 이를 전환해주는 기능이 존재합니다. core.autocrlf인데요, commit할 땐 crlf->lf으로 checkout할 때는 lf->crlf으로 전환 시켜 줍니다. "LF will be replaced by CRLF"라는 오류 메시지는 autocrlf = true인 상태에 발생하는 메시지 이며 윈도우가 아닌 유닉스 스타일인 lf로 줄바꿈이 된 파일이 존재할 때 발생합니다. 윈도우와 유닉스 환경 모두 사용하시는 분이 아니라면 git config --global core.autocrlf false 을 입력하셔서 이 기능을 꺼도 무방할 듯 합니다.
            대화보기
            • moon
              감사합니다
            • 홍청
              git commit
              알파벳 i -> insert 모드 4 -> esc -> : wq +enther

              commit 대기 상태 -> stage area
            • software.lee
              감사합니다
            • Deuklyoung Ko
              감사합니다.

              추가로 찾아보니 이게 있네요.
              git add -A stages All

              git add . stages new and modified, without deleted

              git add -u stages modified and deleted, without new
            • myung
              $ git add f2.txt
              warning: LF will be replaced by CRLF in f2.txt.
              The file will have its original line endings in your working directory.

              버전 추가할 때 이런 메세지가 뜨는데 왜 그런건가요?
            • 좋은 강의 감사합니다.
              목소리가 차분해서 지금까지 들어본 어떤 강의보다도 편하게 듣고 있습니다.
            • 동자
              2018-02-12 월
              다시 이 강좌를 수강하는데 꽤 오랜 시간이 지났다.

              one more modification

              vim 에는 파일들이 존재하는 두 개의 공간이 있다.
              1. stage : 수정된 파일이 commit 되기를 기다리는 장소 (이미 add 된 파일들)
              2. repository : stage에 존재하던 파일들이 commit 되어 저장되는 장소.

              vim 을 오랜만에 사용하면서 답답한 부분들이 생겼다.
              1. insert 모드에서 한글로 입력하다가 command 모드로 돌아가려할 때
              esc를 눌러도 command 모드로 돌아가지 않는다.
              입력모드를 다시 영문입력으로 돌리고 esc를 눌러야 그제야 command 모드로 돌아감.
              - 해당 내용으로 구글 검색시 _vimrc 파일을 수정하여 해결하는
              플러그인이 존재하나, 해결만 해줄 뿐 어떻게 해결하는지는
              내용을 알 수가 없어 더 좋은 사료를 찾기 전까지 보완을 보류
              2. 문서의 내용이 한 페이지를 넘기기 전에는 스크롤이 생기지 않아서 내용을 작성할때
              굉장히 불편하다. 이는 vim 자체에서 해당하는 단축키가 존재하는것으로 알고 있다.
              - z,z 현재 행을 화면 가운데로 이동
              z,t 현재 행을 화면 맨 위로 이동
              z,b 현재 행을 화면 하단으로 이동 (top, bottom, double click 으로 외우면 됨)
              3. 한글 입력중 enter키를 누르면 바로 라인이 변경되지 않는다. 마지막으로 입력한 문자가
              한글일 때만 발생하는 문제. (공백이나 콤마, 닷 입력시엔 발생하지 않음)
            • DomiNik
              그러니까 git add 라는 녀석은 commit 할 지 말지를 결정하는 체크박스 역할을 하는 명령어라고 생각해도 되겠네요??
            • 제로스
              잘봤습니다 ^^
              이해가 잘되네요 ~~
            • Youngjun Lee
              경험이라는게 매우 중요하다는게 느껴지네요.
              구글 드라이버 쓸 때, 뭔가 불편했던게 해소되고 있어요.
              물론 거기서도 비슷한 기능을 사용할 수 있지만, 이렇게 의무화 해야하는게 더 좋다고 생각하거든요.

              고맙습니다 ^^
            • 이유리
              감사합니다.
            • 황지현
              "지옥에서 온 Git" 강의를 보았던 개발자입니다.
              제가 블로그에 정리한 내용을 공유합니다^^

              gitlab, bitbucket, pull request, opensource contribution에 관심이 많으신 분은 도움이 되실거라고 생각합니다.
              제 블로그에 방문하셔서 많은 댓글 부탁드립니다.ㅎㅎ

              [TIP] git 명령어 정리
              http://jhhwang4195.tistory.com......693
            • Jinyong Park
              꿀잼 강의 감사합니다.
            • 오빠는다르다
              감사합니다~!!!
            • 고스트프리
              감사합니다.
            • haMsa
              감사드립니다.
            • 최현승
              감사합니다.
            • 알파고
              감사합니다.
            • 김세창
              카피
              cp f1.txt f2.txt
              git log에서 나갈떄 q를 누르면 됨
              git add -> 커미대기파일가는곳
            • 김수현
              cp f1.txt f2.txt 카피하기
              ls -al
              git status
              git add f2.txt
              git status
              git commit
              i
              2
              esc
              :wq
              git log
              나가고 싶은 경우 q누름?
              vim f1.txt
              source부분을 f1.txt라고 변경
              esc > :wq
              vim f2.txt
              source부분을 f2.txt라고 변경
              esc > :wq
              cat f1.txt
              cat f2.txt
              git status
              왜 깃이 add라는 과정을 포함하고 있는가?
              선택적으로 커밋할 것만 선택하고 커밋할 수있다.
              git add f1.txt
              git status
              git commit
              i > 4 > esc > :wq
              git log
              git add하면 커밋 대기상태로 감 > 이상태를 스테이지 에어리어라고 함
              git add 하면 스테이지 에어리어에 파일을 올리는 것임
              스테이지라는 개념과 레파지토리라는 개념을 가지고 있음
              커밋이 저장된 결과가 저장되는 곳이 레파지토리임
            • githug
              f1.txt ------> stage -------> repository
              (add) (commit)
            • groundntree
              * f1.txt를 복사하여 f2.txt 파일 만들기
              cp f1.txt f2.txt

              * git 상태 확인
              git status

              * stage 올리기
              git add f2.txt

              * 커밋
              git commit

              * 로그 확인
              git log

              * 파일목록 확인
              ls -al

              * f1, f2.txt 모두 수정하세요
              vim f1.txt
              vim f2.txt

              * git 상태 확인
              git status

              Changes not staged for commit:
              (use "git add <file>..." to update what will be committed)
              (use "git checkout -- <file>..." to discard changes in working directory)

              modified: f1.txt
              modified: f2.txt

              * f1.txt 만 add, commit
              git add f1.txt
              git status
              git commit
              git status

              Changes not staged for commit:
              (use "git add <file>..." to update what will be committed)
              (use "git checkout -- <file>..." to discard changes in working directory)

              modified: f2.txt
            • 모든요일의코딩
              목소리 달달하시고 내용도 좋네요!
            • brandon
              현재 쉘에서 명령행이 얼마나 대기했는지 보여주는거 아닐까요 ?

              bash shell configuration 인 것 같습니다 ^^
              대화보기
              • egoing
                http://ohmyz.sh/ 입니다!
                대화보기
                • Junsik Choi
                  잘 듣고 있습니다. 좋은 수업 감사드려요.

                  궁금해서 그런데, 이고잉님 터미널 오른편에 나오는 4m, 1m같은건 뭐에 쓰는건가요??? ㅎㅎ 궁금해서요
                • 진짜 너무너무너무 좋은 수업이네요 정말 감사합니다!!!
                • Philip Oh
                  잘 봤습니다~ 감사합니다~