0. Git의 일상 사용
15815 단어 Git
git를 처음 알았을 때 대략적인 것과 일부 기본 개념, 예를 들어 임시 저장, 제출, 지점 등을 이해할 수 있을 뿐이다.일상적인 업무에 적합한 일반적인 지침을 요약합니다.
1. 로컬 코드 제출
작업공간의 코드 상태를 보려면 다음과 같이 하십시오.
git status
터미널에는 다음과 같은 정보가 표시됩니다.
On branch master
Changes to be committed:
(use "git reset HEAD ..." to un-stage)
new file: src/main/res/layout/letv_live_time_vs_content.xml
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: src/main/res/layout/letv_live_time_live_item.xml
modified: src/main/res/values/colors.xml
modified: src/main/res/values/dimens.xml
modified: src/main/res/values/strings.xml
알림 정보에 의하면 현재 지점 마스터에 새로 추가된 파일이 있는데 제출할 준비가 되어 있습니다.수정된 네 개의 서류가 아직 임시로 저장되지 않았다.
다음은 여러 가지 방법으로 파일을 임시 저장합니다.
git add src/file1 src file1
git add src/ src
git add .
여기서 우리가 가장 많이 사용하는 것은 디렉터리 아래의 모든 파일을 임시로 저장하는 두 번째 명령이다.첫 번째 단일 임시 저장 방식은 너무 번거롭고, 세 번째 모든 추가는 필요하지 않은 파일을 임시 저장할 수 있다.
터미널에서 실행:
git add src/
그런 다음 작업공간의 상태 정보를 확인합니다.
git status
On branch master
Changes to be committed:
(use "git reset HEAD ..." to unstage)
modified: src/main/res/layout/letv_live_time_live_item.xml
new file: src/main/res/layout/letv_live_time_vs_content.xml
modified: src/main/res/values/colors.xml
modified: src/main/res/values/dimens.xml
modified: src/main/res/values/strings.xml
터미널 알림 정보: 현재 마스터 지점에 있습니다. 네 개의 수정된 파일, 새로 추가된 파일 하나가 임시 저장되어 제출 준비를 하고 있습니다.
그 다음에 서류를 제출하는 방법도 다양하다. 여기는 가장 안전한 두 가지만으로도 충분하다.\
git commit -m "commit note" , "commit note"
git commit --amend , vim , . .
터미널에서 실행:
git commit -m "modify setting page layout"
[master dcd6316] modify settings page layout
5 files changed, 24 insertions(+), 24 deletions(-)
마스터 지점에서 제출,
commit-id: dcd6316
5개 파일 변경, 24줄 코드 추가, 24줄 코드 삭제, 로컬 제출 성공.2. 서버의 코드 라이브러리에서 코드 동기화
코드가 로컬에서 제출된 후 작업 공간은 clean 상태여서 후속 작업에 편리하고 서비스 측의 코드를 끌어올릴 수 있습니다.
git fetch origin dev_letv_global // dev_letv_global , .
git fetch origin dev_letv_global:temp // dev_letv_global temp .
여기서:origin은 기본 원격 창고의 이름입니다. devletv_글로벌은 원격 창고의 한 지점입니다. (관리자 이름)
터미널 콘솔에 다음과 같은 정보가 나타납니다.
From ssh://legit.letv.cn:29418/terminal/tv-letv-global
* branch dev_letv_global -> FETCH_HEAD
1fe4874..1948cbe dev_letv_global -> origin/dev_letv_global
실행:
git rebase FEATCH_HEAD
또는:
git rebase temp
코드 서버의 코드와 로컬 코드rebase를 입력하십시오.
주의: 이 조작을 실행하기 전에 로컬 코드를 제출하고 작업 공간이 clean 상태인지 확인하십시오. 그렇지 않으면 조작할 수 없습니다.git는 해당하는 알림을 줄 것입니다.
rebase 프로세스 중git에서 관련 정보를 반환합니다.
Current branch master is up to date.
이 지점의 코드가 이미 최신이거나
First, rewinding head to replay your work on top of it...
Applying: 1.add loading view to Live and Category page.
리베이스 과정 중 어떠한 충돌도 없었다는 것을 설명합니다. (운이 좋았습니다.) 마스터 지점의 코드는 이미 최신식이어서 서버에 제출할 수 있습니다.그러나 대부분의 경우git는 다음과 같은 힌트를 준다.
localhost:letv congguangzi$ git rebase FETCH_HEAD
First, rewinding head to replay your work on top of it...
Applying: 1. modify the category layout
Using index info to reconstruct a base tree...
M src/main/res/values/dimens.xml
Falling back to patching base and 3-way merge...
Auto-merging src/main/res/values/dimens.xml
CONFLICT (content): Merge conflict in src/main/res/values/dimens.xml
Recorded preimage for 'src/main/res/values/dimens.xml'
error: Failed to merge in the changes.
Patch failed at 0001 1. modify the category layout
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
rebase 과정에서 충돌이 발생할 수 있음을 알립니다. 여기에는 안드로이드 스튜디오를 사용하여 충돌을 처리합니다.Android Studio는 기본적으로 충돌을 해결하는 플러그인을 통합하고 강력하며 권장합니다.충돌 처리가 완료되면 작업공간의 상태를 봅니다.
rebase in progress; onto 72abc7d
You are currently rebasing branch 'master' on '72abc7d'.
(all conflicts fixed: run "git rebase --continue")
Changes to be committed:
(use "git reset HEAD ..." to unstage)
modified: src/main/java/com/letv/tv/category/presenter/OtherTitlePresenter.java
new file: src/main/res/drawable/letv_category_other_title_bg.xml
알림은rebase 과정에서 이미 모든 충돌을 처리했기 때문에rebase를 계속할 수 있습니다. 알림에 따라 실행할 수 있습니다.
git rebase --continue
rebase 과정을 완성합니다.localhost:letv congguangzi$ git rebase --continue
Applying: 1. modify the category layout
Recorded resolution for 'src/main/res/values/dimens.xml'.
3. 로컬 코드를 서버에 제출
코드를 동기화한 후 충분한 권한만 확보하면 서버에서 코드를 제출할 수 있습니다.
git push origin master:refs/for/dev_letv_global
여기서: origin 원격 웨어하우스 이름 refs/for/devletv_글로벌>devletv_글로벌 지점에서 > refs/for는 관리자의 검토를 기다리고 있음을 나타냅니다.커밋이 성공하면 git에서 다음과 같은 프롬프트를 표시합니다.
localhost:letv congguangzi$ git push origin master:refs/for/dev_letv_global
Counting objects: 19, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (19/19), 1.64 KiB | 0 bytes/s, done.
Total 19 (delta 13), reused 0 (delta 0)
remote: Resolving deltas: 100% (13/13)
remote: Processing changes: new: 1, refs: 1, done
remote:
remote: New Changes:
remote: http://legit.letv.cn/13439
remote:
To ssh://legit.letv.cn:29418/terminal/tv-letv-global
* [new branch] master -> refs/for/dev_letv_global
알림에는 제출 진도, 원격 지점에 대한 정보가 포함되어 있으며 관리자의 심사를 기다리고 있습니다.
http://legit.letv.cn/13439
는 이번에 제출한 URL입니다. 브라우저에서 이 URL을 열고 리뷰 코드를 추가하는 관리자나 다른 작업을 수행합니다.심사 과정에서 코드를 수정하고 다시 제출할 수 있는 심사입니다.코드는 로컬에서 수정 준비 단계를 수정한 후 다음을 수행합니다.localhost:letv congguangzi$ git commit --amend
[master 9d0b2a3] 1. modify the category layout 2. add live content layout
Date: Thu Jul 21 11:25:05 2016 +0800
7 files changed, 93 insertions(+), 1 deletion(-)
create mode 100644 src/main/res/drawable/letv_category_other_title_bg.xml
create mode 100644 src/main/res/layout/letv_live_time_vs_content.xml
--amend
명령어 추가 제출,vim 편집기 시작,제출 주석 편집,vim 편집기 사용에 대한 군말 없이 구글 도모.편집이 끝난 후 종료를 저장하고 위의 그림과 같은 알림 정보를 얻습니다. 일반적인commit 명령과 유사하지만 추가로 제출한 파일만 추가되었습니다.이후의 조작은 이전과 대동소이하다. 서버fetch 코드,rebase 처리 충돌에서 다시push를 서버에 제출한다.심사가 통과된 후 이 부분의 코드가 입고되면 업데이트를 다시 제출할 수 없고 수정하려면 다음 제출에서만 수정할 수 있습니다.4.git stash 적용
개발 과정에서 자주 이런 상황을 만날 수 있다. 한 번의 제출을 마친 후에 다음 작은 수요가 절반까지 개발되었다. 이때 맏형이 너에게 지난번 제출에 문제가 있어서 수정이 필요하다고 말했다.그러나 새로운 기능은 이미 절반을 썼기 때문에 제출할 수 없다. 어때?사실 여기에는 두 가지 방법이 있는데, 브랜치와stash, 여기서 비교적 간단한stash 방식을 말해 봅시다.
git stash
코드를 저장했음을 알립니다. 작업 공간은 clean 상태입니다. 이 때 서버fetch에서 코드를 수정한 다음 제출이 완료되면 실행합니다.
git stash pop
이 과정에서 원래의 코드와 충돌이 있을 수 있다. 충돌을 처리하는 과정은 서버fetch 코드에서 충돌을 처리하는 방식과 같고 충돌 처리가 완료되면 이전의 개발 임무를 계속할 수 있다.
5.checkout 적용
만약 당신이 Settings Fragment을 수정하고 있다면.java 같은 코드나 Settings Layout.xml 이 레이아웃 파일은 이때 갑자기 자신의 수정이 잘못되었다는 것을 발견하고 파일을 복원해야 한다. 첫 번째 반응은 ctrl+z 취소, 수정이다. 그러나 프로그래머로서 이렇게 하는 것은 확실히 너무 low적이다. 그리고 너무 많이 수정하면 취소 작업만으로 파일을 원래의 상태로 복원할 수 없다.이때git에서 제공하는 checkout 명령이 유용하게 사용됩니다.먼저 작업공간의 상태를 확인합니다.
git status
On branch master
Changes to be committed:
(use "git reset HEAD ..." to unstage)
modified: src/main/res/layout/letv_settings_item.xml
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: src/main/java/com/letv/tv/db/LetvDBHelper.java
여기에 두 개의 서류를 수정하여 그중의 하나를 잠시 저장하였다.git는 상당히 상세한 힌트를 주었습니다. 우리는 힌트에 따라 임시로 저장되지 않은 파일을 복원하고 실행
git checkout src/main/java/com/letv/tv/db/LetvDBHelper.java
,LetvDBHelper를 실행합니다.java는 이전 제출, 즉 수정 전의 상태로 회복됩니다.이미 임시 저장된 파일에 대해 먼저 실행
git reset HEAD src/main/res/layout/letv_settings_item.xml
하고 파일 임시 저장을 취소한 다음에 실행git checkout src/main/res/layout/letv_settings_item.xml
,letvsettings_item.xml 레이아웃 파일은 수정 전의 상태로 회복됩니다.작업공간을 다시 한 번 보려면 다음과 같이 하십시오.git status
On branch master
nothing to commit, working directory clean
Adnroid Studio에서 코드를 확인하고 원래 상태로 복원합니다.nice.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
브랜치 병합(Visual studio 2017 사용)의 계속입니다. 기능 추가를 위한 브랜치를 작성하고, 기능 추가한 후, 그 내용을 develop 브랜치에 병합해 봅니다. 1. 새롭게 「add1」라고 하는 브랜치를 작성 2. 브랜치 "add1"을 선택한 상태에서 M...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.