CodeGym /Java Blog /무작위의 /천상의 만남: Git과 IntelliJ IDEA
John Squirrels
레벨 41
San Francisco

천상의 만남: Git과 IntelliJ IDEA

무작위의 그룹에 게시되었습니다
기존의 전통을 지키며 미래의 시니어 소프트웨어 엔지니어로 인사드립니다. 오늘의 기사는 Git에 대한천상의 만남: Git과 IntelliJ IDEA - 1 제 기사의 논리적 확장입니다 . Git에 대한 기사에서 명령줄에서 Git을 사용하는 방법을 설명했습니다. 오늘은 IntelliJ IDEA에서 모든 작업을 수행하는 방법을 보여 드리겠습니다. 개발자로서의 여정을 시작할 때 커맨드 라인을 사용했고 이를 위해 GUI가 필요하지 않다고 생각했습니다. 결국 모든 것이 있는 그대로 명확했습니다... 하지만 IntelliJ IDEA에서 Git을 사용하기 시작한 순간까지였습니다... 처음부터 제 개인적인 경험을 설명하고 있다고 말하고 싶습니다. IntelliJ IDEA에서 주어진 문제를 해결하는 방법에는 여러 가지가 있습니다. 내가 기사에서 설명하는 것보다 더 나은 방법을 알고 있다면 의견에 적어 주시면 논의하겠습니다.

필수 입력:

  1. Git에 대한 내 기사를 읽고 따라하고 이해하십시오 . 이렇게 하면 모든 것이 설정되고 사용할 준비가 되었는지 확인하는 데 도움이 됩니다.
  2. IntelliJ IDEA를 설치합니다.
  3. 완전한 숙달을 달성하기 위해 한 시간의 개인 시간을 할당하십시오.
Git에 대한 기사에서 사용한 데모 프로젝트 로 작업해 봅시다 .업데이트:발행 시점에 새로운 GitHub UI를 사용할 수 있으며 일부 아이콘은 기사에 표시되지 않습니다. 놀라지 마세요. 새 UI로 전환하지 않거나 찾아보면 됩니다.

프로젝트를 로컬로 복제

여기에는 두 가지 옵션이 있습니다.
  1. 이미 GitHub 계정이 있고 나중에 무언가를 푸시하려는 경우 프로젝트를 포크하고 자신의 복사본을 복제하는 것이 좋습니다.
  2. 내 리포지토리를 복제하고 전체를 서버에 푸시할 수 있는 기능 없이 로컬에서 모든 작업을 수행합니다. 결국 이것은 내 저장소입니다 :)
GitHub에서 프로젝트를 복제하려면 프로젝트 링크를 복사하여 IntelliJ IDEA에 전달해야 합니다.
  1. 프로젝트 주소 복사:

    천상의 만남: Git과 IntelliJ IDEA - 2
  2. IntelliJ IDEA를 열고 "버전 제어에서 가져오기"를 선택합니다.

    천상의 만남: Git과 IntelliJ IDEA - 3
  3. 프로젝트 주소를 복사하여 붙여넣기:

    천상의 만남: Git과 IntelliJ IDEA - 4
  4. IntelliJ IDEA 프로젝트를 생성하라는 메시지가 표시됩니다. 제안 수락:

    천상의 만남: Git과 IntelliJ IDEA - 5
  5. 빌드 시스템이 없고 이 문서의 범위를 벗어나므로 기존 소스에서 프로젝트 만들기를 선택합니다 .

    천상의 만남: Git과 IntelliJ IDEA - 6
  6. 다음으로 아름다운 화면을 볼 수 있습니다. 천상의 만남: Git과 IntelliJ IDEA - 7이제 복제를 알아냈으니 주변을 둘러볼 수 있습니다.

Git UI로서의 IntelliJ IDEA 첫인상

복제된 프로젝트를 자세히 살펴보십시오. 이미 버전 제어 시스템에 대한 많은 정보를 얻을 수 있습니다. 먼저 왼쪽 하단 모서리에 버전 제어 창이 있습니다 . 여기에서 모든 로컬 변경 사항을 찾고 커밋 목록을 얻을 수 있습니다("git log"와 유사). Log 에 대한 논의로 넘어갑시다 . 개발이 어떻게 진행되었는지 정확히 이해하는 데 도움이 되는 특정 시각화가 있습니다. 예를 들어 txt 커밋에 헤더가 추가된 새 분기가 생성된 다음 마스터 분기로 병합된 것을 볼 수 있습니다 . 커밋을 클릭하면 오른쪽 모서리에서 커밋에 대한 모든 정보(모든 변경 사항 및 메타데이터)를 볼 수 있습니다.천상의 만남: Git과 IntelliJ IDEA - 8또한 실제 변경 사항을 볼 수 있습니다. 또한 그곳에서 갈등이 해결되었음을 알 수 있습니다. IDEA는 이것을 아주 잘 보여줍니다. 이 커밋 중에 변경된 파일을 두 번 클릭하면 충돌이 어떻게 해결되었는지 확인할 수 있습니다. 천상의 만남: Git과 IntelliJ IDEA - 9왼쪽과 오른쪽에는 하나로 병합해야 하는 동일한 파일의 두 가지 버전이 있습니다. 중간에 최종 병합 결과가 있습니다. 프로젝트에 브랜치, 커밋, 사용자가 많은 경우 브랜치, 사용자, 날짜별로 별도로 검색해야 합니다. 천상의 만남: Git과 IntelliJ IDEA - 10시작하기 전에 마지막으로 설명하고 싶은 것은 우리가 속한 브랜치를 이해하는 방법입니다. 알아내는 데 1분... 찾았어? 포기하다? :D 오른쪽 하단에 Git: master 라는 버튼이 있습니다.. "Git:" 뒤에 오는 것이 현재 브랜치입니다. 버튼을 클릭하면 다른 브랜치로 전환하고, 새 브랜치를 생성하고, 기존 브랜치의 이름을 바꾸는 등 많은 유용한 작업을 수행할 수 있습니다.천상의 만남: Git과 IntelliJ IDEA - 11

리포지토리 작업

유용한 단축키

향후 작업을 위해 몇 가지 매우 유용한 핫키를 기억해야 합니다.
  1. CTRL+T — 원격 저장소에서 최신 변경 사항을 가져옵니다(git pull).
  2. CTRL+K — 커밋을 생성하거나 현재 변경 사항을 모두 확인합니다. 여기에는 추적되지 않은 파일과 수정된 파일이 모두 포함됩니다(이에 대해 설명하는 git에 대한 내 기사 참조)(git commit).
  3. CTRL+SHIFT+K — 변경 사항을 원격 저장소로 푸시하는 명령입니다. 로컬에서 생성되고 아직 원격 저장소에 없는 모든 커밋이 푸시됩니다(git push).
  4. ALT+CTRL+Z — 특정 파일의 변경 사항을 로컬 저장소에서 생성된 마지막 커밋 상태로 롤백합니다. 왼쪽 상단 모서리에서 전체 프로젝트를 선택하면 모든 파일의 변경 사항을 롤백할 수 있습니다.
천상의 만남: Git과 IntelliJ IDEA - 12

우리는 무엇을 원합니까?

작업을 완료하려면 모든 곳에서 사용되는 기본 시나리오를 마스터해야 합니다. 목표는 별도의 브랜치에서 새로운 기능을 구현한 다음 원격 리포지토리로 푸시하는 것입니다(그런 다음 메인 브랜치에 대한 풀 요청도 생성해야 하지만 이 문서의 범위를 벗어납니다). 이를 위해 무엇이 필요합니까?
  1. 기본 분기(예: "마스터")의 모든 현재 변경 사항을 가져옵니다.

  2. 이 기본 분기에서 작업을 위한 별도의 분기를 만듭니다.

  3. 새로운 기능을 구현합니다.

  4. 메인 브랜치로 이동하여 작업하는 동안 새로운 변경 사항이 있는지 확인하십시오. 그렇지 않다면 모든 것이 정상입니다. 그러나 변경 사항이 있는 경우 다음을 수행합니다. 작업 브랜치로 이동하여 기본 브랜치에서 우리 브랜치로 변경 사항을 리베이스합니다. 모든 것이 잘되면 훌륭합니다. 그러나 충돌이 있을 가능성은 전적으로 있습니다. 그럴 때 원격 저장소에서 시간을 낭비하지 않고 미리 해결할 수 있습니다.

    왜 이렇게 해야 하는지 궁금하시죠? 분기를 로컬 리포지토리로 푸시한 후 발생하는 충돌을 방지하는 좋은 매너입니다(물론 충돌이 계속 발생할 가능성은 있지만 훨씬 작아집니다 ) .

  5. 변경 사항을 원격 저장소로 푸시합니다.
다음에 오는 것은 당신의 작업과 상상력에 달려 있습니다.

원격 서버에서 변경 사항을 가져오시겠습니까?

새 커밋으로 README에 설명을 추가했으며 이러한 변경 사항을 적용하고 싶습니다. 로컬 리포지토리와 원격 리포지토리 모두에서 변경된 경우 병합과 리베이스 중에서 선택하도록 초대됩니다. 우리는 병합을 선택합니다. Enter CTRL+T : 천상의 만남: Git과 IntelliJ IDEA - 13이제 README가 어떻게 변경되었는지, 즉 원격 저장소에서 가져온 변경 사항을 볼 수 있고 오른쪽 하단 모서리에서 서버에서 온 변경 사항에 대한 모든 세부 정보를 볼 수 있습니다.천상의 만남: Git과 IntelliJ IDEA - 14

마스터를 기반으로 새 분기 만들기

여기에서는 모든 것이 간단합니다.
  1. 오른쪽 하단으로 이동하여 Git: master 를 클릭합니다 . + 새 분기를 선택합니다 .

    천상의 만남: Git과 IntelliJ IDEA - 15
  2. Checkout branch 확인란을 선택된 상태로 두고 새 지점의 이름을 입력합니다. 나를 위해 그것은 readme-improver 가 될 것입니다 .

    천상의 만남: Git과 IntelliJ IDEA - 16

    Git: master 는 Git: readme-improver 로 변경됩니다 .

병렬 작업을 시뮬레이션해 봅시다

충돌이 발생하려면 누군가 생성해야 합니다. :D 브라우저를 통해 새 커밋으로 README를 편집하여 병렬 작업을 시뮬레이션합니다. 마치 내가 작업하는 동안 누군가가 동일한 파일을 변경한 것과 같습니다. 결과는 갈등이 될 것입니다. 10행에서 "fully"라는 단어를 제거하겠습니다.

기능 구현

우리의 임무는 README를 변경하고 새 기사에 설명을 추가하는 것입니다. 즉, Git에서의 작업은 IntelliJ IDEA를 거칩니다. 추가: 천상의 만남: Git과 IntelliJ IDEA - 17변경이 완료되었습니다. 이제 커밋을 만들 수 있습니다. CTRL+K 를 누르면 다음이 제공됩니다. 천상의 만남: Git과 IntelliJ IDEA - 18커밋을 생성하기 전에 이 창에서 제공하는 내용을 자세히 살펴봐야 합니다. 어디를 볼지 보여주기 위해 빨간색 화살표를 추가했습니다. 여기에 흥미로운 것들이 많이 있습니다. 커밋 메시지 섹션 에서 커밋과 관련된 텍스트를 작성합니다. 그런 다음 생성하려면 커밋을 클릭해야 합니다.. 핫키로 이 작업을 수행하는 방법을 아직 찾지 못했습니다. 누군가 방법을 알아내면 저에게 편지를 보내주세요. 그러면 매우 기쁠 것입니다. README가 변경되었다고 작성하고 커밋을 생성합니다. 커밋 이름과 함께 왼쪽 하단 모서리에 경고 팝업이 나타납니다.천상의 만남: Git과 IntelliJ IDEA - 19

메인 브랜치 변경 여부 확인

우리는 임무를 완수했습니다. 효과가있다. 우리는 테스트를 작성했습니다. 모든 것이 괜찮습니다. 하지만 서버에 푸시하기 전에 그 동안 메인 브랜치에 변경 사항이 있었는지 확인해야 합니다. 어떻게 그런 일이 일어날 수 있습니까? 아주 쉽게: 누군가 당신보다 작업을 나중에 받고 그 누군가는 당신이 작업을 완료하는 것보다 더 빨리 완료합니다. 따라서 마스터 브랜치로 이동해야 합니다. 이렇게 하려면 아래 스크린샷의 오른쪽 하단 모서리에 표시된 작업을 수행해야 합니다. 천상의 만남: Git과 IntelliJ IDEA - 20마스터 분기에서 CTRL+T를 눌러 원격 서버에서 최신 변경 사항을 가져옵니다. 변경 내용을 보면 무슨 일이 일어났는지 쉽게 알 수 있습니다.천상의 만남: Git과 IntelliJ IDEA - 21"fully"라는 단어가 제거되었습니다. 마케팅 담당자가 그렇게 작성하면 안 된다고 판단하고 개발자에게 업데이트 작업을 부여했을 수도 있습니다. 이제 최신 버전의 마스터 브랜치에 대한 로컬 복사본이 생겼습니다. readme-improver 로 돌아가십시오 . 이제 마스터 브랜치에서 우리 브랜치로 변경 사항을 리베이스해야 합니다. 우리는 이렇게 합니다: 천상의 만남: Git과 IntelliJ IDEA - 22모든 것을 올바르게 수행하고 저를 따라했다면 결과는 README 파일에 충돌이 표시되어야 합니다. 천상의 만남: Git과 IntelliJ IDEA - 23여기에는 이해하고 흡수해야 할 많은 정보가 있습니다. 여기에 충돌이 있는 파일 목록(이 경우 하나의 파일)이 표시됩니다. 세 가지 옵션 중에서 선택할 수 있습니다.
  1. accept yours — readme-improver의 변경 사항만 수락합니다.
  2. accept theirs — 마스터의 변경 사항만 수락합니다.
  3. 병합 — 보관할 항목과 버릴 항목을 직접 선택하세요.
무엇이 변경되었는지는 명확하지 않습니다. 마스터 브랜치에 변경 사항이 있는 경우 해당 브랜치에 변경 사항이 필요하므로 단순히 변경 사항을 수락할 수 없습니다. 따라서 병합을 선택합니다 . 천상의 만남: Git과 IntelliJ IDEA - 24여기에서 세 부분이 있음을 알 수 있습니다.
  1. 이것은 readme-improver의 변경 사항입니다.
  2. 병합된 결과입니다. 현재로서는 변경 이전에 존재했던 것입니다.
  3. 마스터 브랜치의 변경 사항.
우리는 모두가 만족할 통합된 결과를 생성해야 합니다. 변경하기 전에 변경된 내용을 검토한 결과 단순히 "fully"라는 단어가 제거되었음을 알 수 있습니다. 그래, 문제 없어! 즉, 병합된 결과에서도 제거한 다음 변경 사항을 추가합니다. 병합된 결과를 수정하면 적용 을 클릭할 수 있습니다 . 그런 다음 리베이스가 성공했음을 알려주는 알림이 표시됩니다 천상의 만남: Git과 IntelliJ IDEA - 25. IntelliJ IDEA를 통해 첫 번째 충돌을 해결했습니다 :D

변경 사항을 원격 서버로 푸시

다음 단계는 변경 사항을 원격 서버에 푸시하고 풀 요청을 생성하는 것입니다. 이렇게 하려면 CTRL+SHIFT+K 를 누르기만 하면 됩니다 . 그런 다음 다음을 얻습니다. 천상의 만남: Git과 IntelliJ IDEA - 26왼쪽에는 원격 저장소로 푸시되지 않은 커밋 목록이 있습니다. 오른쪽에는 변경된 모든 파일이 있습니다. 그리고 그게 다야! 푸시를 누르시면 행복을 느끼실 수 있습니다 :) 푸시가 성공하면 오른쪽 하단에 다음과 같은 알림이 표시됩니다.천상의 만남: Git과 IntelliJ IDEA - 27

보너스 부분

처음에는 풀 리퀘스트 생성을 이 글에 추가하고 싶지 않았지만, 풀 리퀘스트가 없으면 완전하지 않습니다. 이제 GitHub 리포지토리(물론 여러분의 것입니다 :))로 이동하면 GitHub가 이미 우리가 원하는 것을 알고 있음을 알 수 있습니다. 비교 및 ​​풀 요청을천상의 만남: Git과 IntelliJ IDEA - 28 클릭합니다 . 그런 다음 풀 요청 만들기 를 클릭합니다 . 미리 충돌을 해결했기 때문에 이제 풀 요청을 생성할 때 즉시 병합할 수 있습니다. 그리고 이것이 제가 이번에 말하고 싶었던 전부입니다. 물론, 나는 당신을 위해 문을 조금 열고 작은 부분을 보여줬을 뿐입니다. 나머지는 필요에 따라 배우게 됩니다. GitHub에서 나를 팔로우하도록 초대하는 습관이 있습니다.천상의 만남: Git과 IntelliJ IDEA - 29, 직장에서 사용하는 다양한 기술과 관련된 프로젝트를 게시합니다. 나는 최근에 개인적인 성취를 이루었습니다. 내 프로젝트 중 하나는 100명 이상의 개발자로부터 별표를 받았습니다. 당신이 한 일이 다른 사람에 의해 이용되고 있다는 것을 알게 될 때 엄청난 기쁨을 느낍니다. 그리고 그것을 잘 사용하십시오.

유용한 링크

  1. CodeGym: Git 시작하기: 초보자를 위한 종합 안내서
  2. GitHub: 연습을 위한 데모 프로젝트
  3. JetBrains: Git 리포지토리 설정
  4. GitHub: 내 계정
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION