>  Q&A  >  본문

git - 먼저 커밋한 다음 풀하고 마지막으로 푸시하는 이유는 무엇입니까? 커밋하고 직접 푸시하는 대신?

정말 이해가 안 되고, 인터넷에도 이에 대한 명확한 설명이 없습니다.
상황은 이렇습니다. 이제 원격 창고와 마스터 지점이 하나만 있습니다. 그런 다음 내 로컬 창고가 원격 마스터에서 복제됩니다. 모두가 이를 복제한 다음 로컬로 변경하고 커밋한 다음 풀(Pull)하고 푸시(Push)합니다. 이제 질문이 나옵니다:

1 그렇다면 내 로컬 지점도 지점으로 간주될 수 있나요? 아니면 그냥 동네 창고인가요?

2. 원격으로 새 브랜치를 생성한 후 가져오면 로컬에 브랜치가 생기나요? 내 로컬 지점이 새로 생성된 원격 지점과 동일합니까?

3. 현지 창고와 현지 지점의 차이점은 무엇인가요?

4. 커밋이 로컬 창고에 제출된 후 푸시됩니다. 이 푸시는 모든 코드를 원격 창고로 푸시합니까, 아니면 커밋만 원격 창고로 푸시합니까?

5. 그럼 왜 먼저 커밋하고 풀하고 푸시해야 하나요? 덮어씌워졌다는 뜻이 아닌가요? 좋은 로컬 변경 사항이 있나요? 그럼 어떻게 밀어낼 수 있나요?

6. 두 개의 분기 A와 B. A는 B와 병합되고 B는 A와 병합됩니다. 차이점이 있나요?

怪我咯怪我咯2674일 전3486

모든 응답(3)나는 대답할 것이다

  • 滿天的星座

    滿天的星座2017-05-25 15:10:32

    인사이트

    1. 로컬 컴퓨터는 클론으로 간주됩니다.

    2. 예, 원격으로 브랜치 개발자가 있는 경우 오리진 개발자를 끌어오면 로컬로 dev 브랜치가 생깁니다.

    3. 창고는 전체 프로젝트이고 지점은 생산 라인 중 하나입니다. 알리바바 그룹에 타오바오가 하나만 있는 것이 아닌 것처럼

    4. 푸시는 물론 전부는 아니지만 직접 테스트하여 대용량 파일을 얻을 수 있습니다. 처음으로 몇 킬로바이트의 텍스트를 추가하면 전송 속도가 매우 느려집니다. 아주 빨리

    5. 커밋은 원격이 로컬을 직접 덮어쓰는 것을 방지합니다. 수정 사항이 있는 한 커밋하라는 메시지가 표시되는 이유는 원격의 최신 항목이 로컬과 일치하지 않기 때문입니다. 원격 브랜치에 있는 것들은 버릴 수 없기 때문에 로컬에서 가져와서 저장하면 로컬이 최신이 되고 마지막으로 푸시하면 됩니다. 원격을 수정하세요.

    답변 완료, 알겠습니다

    회신하다
    0
  • ringa_lee

    ringa_lee2017-05-25 15:10:32

    1. 먼저 pull不会把你本地代码覆盖掉,而是提醒merge冲突,需要你手动merge;

    2. pull?因为对你来说你本地可能有个分支,你在这个分支上面工作,那么也有可能存在其他人和你一样的做法,也许你们的代码有依赖又或是有冲突,你肯定不能在master내부 테스트가 필요한가요? 지점에 최신 코드가 있는지 확인해야 합니다.

    3. 현지 지점 코드가 반드시 현지 창고와 일치하는 것은 아닙니다. 현지 창고에 저장하기 전에 현지 코드를 제출하는 것은 개발을 위한 플랫폼인 현지 지점과 동일하지만 최종 저장 주소입니다. 개발된 결과물은 로컬 창고입니다

    둘 다 가능하지만 대부분의 사람들은 다른 파트너의 코드 변경 사항을 이해할 수 있도록 먼저 pull,因为你没提交你的代码,别人提交了,这时候git会自动merge,而如果你提交了,有时候git自动merge会报冲突,选择先pull就是图一个方便和省事,当然也有人选择先pushpull를 선택합니다

    일반인의 관점에서 말하면, 무엇이 필요한지, 무엇이 필요하지 않은지 모르기 때문에 master的代码快照是1,你的同伴改了提交了是2,你的提交代码是3,如果你先pull,那么就是3和1merge,而3包含1,git选择最新代码3覆盖1,不存在冲突关系,而你先pushpull,那就是2和3merge,这是git自动merge잘못될 것이라는 것이 밝혀졌습니다

    병합 문제
    a와 b의 병합은 b와 a의 병합과 동일합니다. 두 브랜치에서 요구하는 코드는 유지되어 모두가 동의하는 코드로 통합됩니다

    병합 과정이 조금 다를 수 있다는 점만 다를 뿐 기본적으로는 동일합니다

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-25 15:10:32

    1. 로컬과 원격의 관계는 두 개의 브랜치와 동일합니다. 스트림 설정 시 해당 관계가 자동으로 바인딩되어 있기 때문에 같은 느낌이 듭니다..발발라git pull

    2. 원격에서 새 브랜치를 생성하고 로컬로 가져오는 이유는 동일하지만 로컬 브랜치와 원격 브랜치는 다릅니다

    3. 현지점은 현지창고에 속하며 포괄관계입니다. 하나의 창고에 여러 지점이 있을 수 있으며, 태그일 경우 독립창고로 분리될 수 있습니다

    4. 완전히 리모트에 푸시되지는 않습니다. 커밋 기록을 비교하여 수행됩니다. 로컬이 리모트보다 높으면 추가

      를 추가한 다음 제출 시간에 따라 정렬하여 새로 만듭니다. 커밋 기록을 병합하고 업로드하세요 commit 给怼上去,如果本地的这几个 commit 和远程的 commit 有冲突的部分就merge

    5. 먼저 커밋하고, 그 다음 당기고, 그 다음 밀어내는 이런 상황은 여러 사람이 병합 개발하는 상황에 대처하기 위한 것입니다.

      1. 이 제출에서 내가 무엇을 변경했는지 git에게 알려주는 것입니다. 그렇지 않으면 방금 변경했지만 git은 변경한 사실을 모르므로 판단하고 비교할 방법이 없습니다.commit

      2. 세 번 연속으로 다시 한 번 당기면 협상 중에 다른 사람이 다른 버전을 제출하는 것을 방지할 수 있습니다. 일반적으로 충돌이 없으면 직접 병합됩니다. 귀하의 코드는 덮어쓰이지 않습니다pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull

      3. 코드 적용 또는 손실 발생: 예를 들어 A와 B가 코드를 가져오면 두 버전이 모두 1입니다. A가 로컬에서 2와 3을 제출하고 이를 원격으로 푸시했을 때 B가 먼저

        작업을 수행하지 않았습니다. 직접 해봤는데 뭔가 썼는데 commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 이때 B의 로컬 버전이 3이 됐습니다. B가 로컬 버전이 3일 때 A가 작성한 코드를 변경한 후 git commit && git push<를 수행했을 때입니다. /code>, 그러면 원격 버전에서 답은 4이고, A의 코드가 가려지므로 모두가 먼저 커밋한 다음 당겨야 합니다. 그렇지 않으면 코드가 정말 가려지게 됩니다

    회신하다
    0
  • 취소회신하다