Android Studio 업데이트 프로젝트 : 병합 vs 리베이스 vs 브랜치 기본값
Merge vs Rebase와 관련하여 상당한 양의 질문이 있음을 알기 때문에 이것이 중복되는 것처럼 보이면 사과하지만 'Branch Default'도 던지는 것 같지 않습니다.
여러 사람이 동시에 작업하는 경우 (예 : Android Studio의 Android 앱)가 제공됩니다. 누군가가 마스터 브랜치로 푸시하고 아직 작업중인 작업을 덮어 쓰지 않고 아직 커밋하고 마스터로 푸시하지 않도록 새 마스터를 가져 오려는 경우 프로젝트 / 풀을 업데이트하는 가장 좋은 옵션은 무엇입니까? Android Studio는 'Update Project'를 클릭하면 'Merge' 'Rebase'및 'Branch Default'를 표시합니다. 어떻게 들리면 'Rebase'( 'Merge'가 뒤 따르는?)를하고 싶지만 확실하지 않습니다.
은닉
여기서 핵심은 저장하려는 커밋되지 않은 작업이 있다는 것입니다. 병합을 시도하기 전에 커밋되지 않은 변경 사항 을 저장하고 작업 디렉토리를 정리하기 위해 변경 사항 을 숨겨야합니다 .
git stash
변경 사항을 숨기려면 실행하십시오 . 그런 다음 문제없이 변경 사항을 가져올 수 있어야합니다.
성공적으로 풀을 가져온 후에 git stash apply
는 풀 이전에 변경 한 사항을 다시 적용하기 위해를 수행 할 수 있습니다 .
병합 및 리베이스
변경 사항 숨김은 커밋되지 않은 변경 사항 만있는 경우에만 작동합니다 . 어떤 시점에서 커밋했지만 푸시하지 않은 경우 리베이스하거나 병합해야합니다.
이 StackOverflow 게시물 에는 차이점에 대한 몇 가지 훌륭한 정보가 있습니다.
일반적으로 병합이 더 쉽지만 일부는 병합 커밋으로 git 히스토리를 "오염"한다고 생각합니다.
리베이스에는 추가 작업이 필요하지만 병합 커밋이 없기 때문에 기본적으로 병합이 보이지 않게됩니다.
다시 말하지만, 귀하의 경우에는 병합하거나 리베이스 할 필요가 없습니다. 간단히 은닉하고, 당기고, 은닉을 적용하면 모두 괜찮습니다.
IntelliJ IDEA documnetatition 에 따르면 :
업데이트 유형
- 병합 : 병합 전략을 적용하려면이 옵션을 선택합니다. 결과는 running
git fetch ; git merge
또는git pull --no-rebase
. - 리베이스 다음 REBASE 전략을 적용하려면이 옵션을 선택합니다. 결과는 running
git fetch ; git rebase
또는git pull --rebase
. - 분기 기본값 : 분기에 대한 기본 명령을 적용하려면이 옵션을 선택합니다. 기본 명령은 구성 파일 의
branch.<name>
섹션에 지정.git/config
됩니다.
업데이트 전 작업 트리 정리
이 영역에서 업데이트 전에 작업 트리를 정리하는 동안 변경 사항을 저장하는 방법을 지정합니다. 업데이트가 완료되면 변경 사항이 복원됩니다. 사용 가능한 옵션은 다음과 같습니다.
- Stash 사용 : 변경 사항을 Git 숨김에 저장하려면이 옵션을 선택하면 Git 자체에서 생성되므로 IntelliJ IDEA 외부에서도 변경된 숨김 패치를 적용 할 수 있습니다. 사용
- Shelve : 변경 사항을 서가에 저장하려면이 옵션을 선택합니다. Shelving은 IntelliJ IDEA 내부 작업이며, 보류 된 변경에서 생성 된 패치는 일반적으로 IntelliJ IDEA 내부에 적용됩니다 (보관되지 않음). IntelliJ IDEA 외부에서 보류 된 변경 사항을 적용하는 것도 가능하지만 추가 단계가 필요합니다.
Google 문서에서이 질문에 대한 답 (예 : 워크 플로)을 찾을 수 없습니다. 여기에 UI에서 완전히 Android Studio와 Git을 사용한 실제 경험이 있습니다.
(명령 줄과 IDE 사이를 전환 할 때 구토합니다. IDE가 부족하다는 의미입니다!)
- 변경 사항을 저장하십시오 : 프로젝트-> Git-> 저장소-> 변경 사항 저장을 마우스 오른쪽 버튼으로 클릭하십시오. 이름을 지어주세요.
- 동료가 수행 한 업데이트 가져 오기 : 프로젝트-> Git-> 저장소-> 가져 오기를 마우스 오른쪽 버튼으로 클릭합니다.
- 다음을 사용하여 코드 변경 사항을 다시 병합하십시오. Project-> Git-> Repository-> UnStash Changes-> Apply Stash
- 그러면 "충돌과 병합 된 파일"UI가 표시됩니다. 여기에서 파일을 선택하고 선택적으로 병합합니다.
경고
수동 병합 " 수정본 병합"UI는 끔찍 합니다. 한번 시도해 보면 무슨 말인지 알 수있을 것입니다. "스크롤링 동기화"가 실제로 작동하도록하는데 행운을 빕니다. 이 UI가 2015 년 첫 몇 주 이내에 해결되기를 진심으로 바랍니다.
문서 에 따르면 :
병합 : 업데이트 중에 병합 을 수행하려면이 옵션을 선택합니다 . 이것은 running
git fetch
and thengit merge
또는git pull --no-rebase
.
리베이스 : 수행하려면이 옵션을 선택 REBASE를 업데이트 중입니다. 이것은 runninggit fetch
and thengit rebase
또는`git pull --rebase (모든 로컬 커밋이 업데이트 된 업스트림 헤드 위에 놓임)와 동일합니다.
분기 기본값 : 다른 분기에 대해 다른 업데이트 전략을 적용하려면이 옵션을 선택합니다. 구성 파일 의branch.<name>
섹션 에서 각 분기에 대한 기본 업데이트 유형을 지정할 수 있습니다.git/config
.
Android Studio 터미널로 Git 프로젝트 업데이트
- git add.
- git commit -m "anything"
- git push origin master
이것이 내가 귀하의 게시물에서 답을 찾고 싶었던 것입니다. 그래서 제가이 답을 쓰는 이유입니다.
'programing' 카테고리의 다른 글
Python의 지수화-math.pow 및 math.sqrt 대신 ** 연산자를 선호해야합니까? (0) | 2020.12.31 |
---|---|
nodejs에서 childprocess를 종료하는 방법은 무엇입니까? (0) | 2020.12.31 |
ES6 모듈을 사용하여 단위 테스트에 대한 종속성을 모의하는 방법 (0) | 2020.12.31 |
Babel 6을 ES5 자바 스크립트로 컴파일하려면 어떻게해야합니까? (0) | 2020.12.31 |
이 Perl 정규식에서`\ s +`가`\ s \ s *`보다 훨씬 빠른 이유는 무엇입니까? (0) | 2020.12.31 |