dev
를 가져옵니다. 이때 두 브랜치에는 제출 기록이 있습니다. 병합할 때 일반적인 상황은 main을 기반으로 직접 병합하는 것입니다. 위에서 언급한 Merge 브랜치
인 C7
의 제출 정보를 하나 더 추가하는 대신 이는 분명히 매우 불합리한 현상입니다(물론 이는 정상적으로 git 작업에 영향을 미치지 않습니다). . 🎜🎜
git rebase
입니다. 🎜下面我们先来看看变基以后git分支是什么样的了
可以看到,当dev
分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。
示例操作" >🎜merge or rebase🎜🎜🎜위에서 언급한 병합 작업의 경우 일반적으로 git merge <branch name>
브랜치를 통해 특정 브랜치를 직접 병합합니다. 암호. 먼저 git merge
를 직접 사용할 때의 문제점을 살펴보겠습니다. 아래와 같이 매우 불쾌한 Merge Branch
메시지가 있습니다. 🎜🎜
🎜🎜다음 그림은 합병 후 흐름도입니다. code>main 브랜치는 개발을 위해 dev
를 가져옵니다. 이때 두 브랜치에는 제출 기록이 있습니다. 병합할 때 일반적인 상황은 main을 기반으로 직접 병합하는 것입니다. 위에서 언급한 Merge 브랜치
인 C7
의 제출 정보를 하나 더 추가하는 대신 이는 분명히 매우 불합리한 현상입니다(물론 이는 정상적으로 git 작업에 영향을 미치지 않습니다). . 🎜🎜
🎜🎜이 문제를 해결하는 방법 현상으로 인해 발생하는 문제점은 무엇인가요? 대답은 일반적으로 rebase로 알려진 git rebase
입니다. 🎜
下面我们先来看看变基以后git分支是什么样的了
可以看到,当dev
分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。
示例操作
Gitlab에서 코드를 우아하게 가져오고 병합하는 방법에 대해 이야기해 보겠습니다.
Gitlab에서 코드를 우아하게 끌어오고 병합하는 방법은 무엇입니까? 다음 글에서는 Gitlab에서 코드를 가져오고 병합하는 방법을 소개하겠습니다. 도움이 되셨으면 좋겠습니다!
pull or fetch
코드 풀링 작업에는 git pull
과 git fetch
의 두 가지 형태가 있는데, 둘의 차이점은 무엇인가요? ? git pull
和git fetch
,那么这两种有什么区别呢?
让我们先来看看一个架构图
图中展示一个完整的git流程,为了更清晰的了解每个区域,我们下来解释一下他们的功能:
- 工作区(working directory), 简言之就是你工作的区域。对于git而言,就是的本地工作目录。
-
暂存区(stage area, 又称为索引区index), 是把修改提交版本库前的一个过渡阶段。在工作目录下
.git
的目录里面有个index
文件,存储着关于暂存区的内容。git add命令将工作区内容添加到暂存区。 -
本地仓库(local repository), 版本控制系统的仓库,存在于本地。当执行git commit命令后,会将暂存区内容提交到仓库之中。
.git/objects
目录中存放了每一个提交的记录,而在.git/refs
目录下存放的是分支信息和tag信息。 - 远程版本库(remote repository), 与本地仓库概念基本一致,不同之处在于一个存在远程,可用于远程协作,一个却是存在于本地。通过push/pull可实现本地与远程的交互;
-
远程仓库副本, 可以理解为存在于本地的远程仓库缓存。当使用
git fetch
拉取远程代码仓库的时候,就相当于在本地有一个远程仓库的副本,你可以选择把这个副本合并到本地仓库中。
从图中可以看出来,当我们使用git pull
拉取代码的时候,是直接合并到了本地分支,而使用git fetch
拉取代码的时候,会先在本地生成一个远程仓库的副本,然后使用git merge
或者git rebase
合并到本地分支。
既然能直接git pull
何必多次一举呢?试想一个场景,当你想合并别人的代码,又不知道人家改了什么东西,是否能够跟你代码合并到一起,这时候通过git fetch
就能很轻易的实现。git fetch
以后实际并不会立马跟本地分支立马合并,在git fetch
以后,会显示如下图:
上图显示了远程新增了一个test2
分支,在test
分支上多了个一个提交信息,这时候在.git/refs/remotes/origin
目录下可以看到多了一个test2
分支。
使用git log origin/test
,可以查看具体的提交信息
如果想查看提交的内容是啥,只能通过新建一个分支,
git checkout -b test-origin git merge test
讲到这里,相信你已经明白了git pull
和git fetch
的区别了吧。总结一下:
git fetch 更安全,更人性化
git pull 更激进,破坏性更强
一般的Leader在管理项目的时候都是习惯性的使用git fetch
查看最近新增了哪些分支,做了哪些修改,从而对项目做出更好的把控。
merge or rebase
上面提到的合并操作,一般我们直接是通过git merge <分支名>
去合并某个分支的代码。先看看直接使用git merge
的问题,有一条看着很不顺眼的Merge branch
信息,如下图所示:
下图是合并后的一个流程图,当我们在main
分支拉一个dev
进行开发,这时候两个分支都有提交记录,当我们合并的时候,正常情况应该是在main的基础上,直接合并,而不是多了一个C7
的提交信息,也就是上面提到的Merge branch
,这显然是一个很不合理的现象(当然这也不影响git正常工作)。
那如何解决这个现象导致的问题呢?答案就是git rebase

- 🎜작업 디렉터리, 🎜 Simple 즉, 영역입니다. 당신이 일하는 곳. git의 경우 로컬 작업 디렉터리입니다.
- 🎜스테이징 영역(스테이지 영역, 인덱스 영역 인덱스라고도 함), 🎜은 수정 사항을 저장소에 제출하기 전의 전환 단계입니다. 작업 디렉터리 아래
.git
디렉터리에index
파일이 있는데, 여기에는 임시 저장 영역의 내용이 저장됩니다. git add 명령은 작업 공간 내용을 스테이징 영역에 추가합니다. - 🎜로컬 저장소, 🎜 버전 관리 시스템의 창고는 로컬에 존재합니다. git commit 명령이 실행되면 스테이징 영역의 내용이 웨어하우스에 제출됩니다.
.git/objects
디렉토리는 각 제출의 기록을 저장하고.git/refs
디렉토리는 분기 정보와 태그 정보를 저장합니다. - 🎜원격 저장소, 🎜는 기본적으로 로컬 창고와 동일한 개념입니다. 차이점은 하나는 원격으로 존재하고 원격 협업에 사용할 수 있는 반면 다른 하나는 로컬에 존재한다는 것입니다. 푸시/풀을 통해 로컬 및 원격 상호 작용이 가능합니다.
- 🎜원격 웨어하우스 복사본, 🎜로컬에 존재하는 원격 웨어하우스 캐시로 이해될 수 있습니다.
git fetch
를 사용하여 원격 코드 저장소를 가져오는 것은 원격 저장소의 복사본을 로컬에 갖는 것과 같습니다. 이 복사본을 로컬 저장소에 병합하도록 선택할 수 있습니다.
git pull
을 사용하여 코드를 가져오면 git fetch를 사용하는 동안 로컬 브랜치로 직접 병합됩니다. </ code>코드를 가져올 때 먼저 로컬에 원격 웨어하우스의 복사본을 생성한 다음 <code>git merge
또는 git rebase
를 사용하여 로컬 분기에 병합합니다. 🎜🎜직접 git pull
할 수 있는데 왜 굳이 여러 번 해야 할까요? 다른 사람의 코드를 병합하고 싶지만 변경된 내용이 무엇인지, 코드와 병합할 수 있는지 여부를 모르는 경우 git fetch
를 통해 쉽게 수행할 수 있습니다. git fetch
는 로컬 브랜치와 즉시 병합되지 않습니다. git fetch
후에는 다음 그림이 표시됩니다: 🎜🎜
test2</code가 원격으로 추가된 모습입니다> 브랜치에는 <code>test
브랜치에 제출 정보가 하나 더 있습니다. 이때 .git/refs/remotes/origin
디렉터리에서 를 하나 더 볼 수 있습니다. .test2
브랜치. 🎜🎜git log Origin/test
를 사용하여 특정 제출 정보를 확인하세요🎜🎜# 拉取main分支代码 git fetch origin main # 合并到dev git rebase origin/main
git 이해하기 pull
과 git fetch
의 차이점은 무엇인가요? 요약하자면: 🎜- 🎜git fetch가 더 안전하고 사용자 친화적입니다🎜
- 🎜git pull이 더 공격적이고 파괴적입니다🎜
git fetch
를 사용하여 최근에 어떤 브랜치가 추가되었는지, 어떤 수정이 이루어졌는지 확인합니다. 🎜🎜merge or rebase🎜🎜🎜위에서 언급한 병합 작업의 경우 일반적으로 git merge <branch name>
브랜치를 통해 특정 브랜치를 직접 병합합니다. 암호. 먼저 git merge
를 직접 사용할 때의 문제점을 살펴보겠습니다. 아래와 같이 매우 불쾌한 Merge Branch
메시지가 있습니다. 🎜🎜
🎜🎜다음 그림은 합병 후 흐름도입니다. code>main 브랜치는 개발을 위해 dev
를 가져옵니다. 이때 두 브랜치에는 제출 기록이 있습니다. 병합할 때 일반적인 상황은 main을 기반으로 직접 병합하는 것입니다. 위에서 언급한 Merge 브랜치
인 C7
의 제출 정보를 하나 더 추가하는 대신 이는 분명히 매우 불합리한 현상입니다(물론 이는 정상적으로 git 작업에 영향을 미치지 않습니다). . 🎜🎜
🎜🎜이 문제를 해결하는 방법 현상으로 인해 발생하는 문제점은 무엇인가요? 대답은 일반적으로 rebase로 알려진 git rebase
입니다. 🎜
下面我们先来看看变基以后git分支是什么样的了
可以看到,当dev
分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。
示例操作
上面讲了这么多,现在让我们来实际操作一下。
场景:远程有一个main
分支上有内容更新,现在我们需要把更新的内容合并到本地dev
分支上,然后push
到远程dev
分支,当前分支实在dev分支。
简单实现(就是很朴实无华):
# 拉取main分支代码 git fetch origin main # 合并到dev git rebase origin/main
上面的git rebase
还有个快捷的操作,直接一行命令搞定
# 拉取test分支代码合并到dev git pull --rebase origin test
如果你不想每次都添加rebase
,可以在终端中输入下面的命令:
git config --global pull.rebase true
这个配置就是告诉git在每次pull前先进行rebase操作
其他命令参考
# 查看本地分支 git branch # 查看远程分支 git branch -r # 查看所有分支 git branch -a # 拉取所有远程分支代码 git fetch # 拉取origin源上所有分支代码 git fetch origin # 拉取orign源上main分支代码 git fetch origin main # 拉取远程分支到新建的一个本地分支并 git checkout -b newBrach origin/master # 合并远程分支到本地 git pull --rebase origin master # 查看提交日志 git log --oneline # 查看某个人提交的日志 git log --author=xiumubai --oneline # 查看某个文件提交的记录 git blame README.md # 查看某次提交的内容 git show <commitid> # 查看最近几次的提交 git log -p -n
(学习视频分享:编程基础视频)
위 내용은 Gitlab에서 코드를 우아하게 가져오고 병합하는 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Go Language의 부동 소수점 번호 작동에 사용되는 라이브러리는 정확도를 보장하는 방법을 소개합니다.

GiteEpages 정적 웹 사이트 배포 실패 : 404 오류 문제 해결 및 해결시 Gitee ...

GO의 어떤 라이브러리가 대기업이나 잘 알려진 오픈 소스 프로젝트에서 개발 했습니까? GO에 프로그래밍 할 때 개발자는 종종 몇 가지 일반적인 요구를 만납니다.

질문 설명 : 해외 버전의 배송 지역 데이터를 얻는 방법은 무엇입니까? 기성품 자원이 있습니까? 국경 간 전자 상거래 또는 세계화 된 비즈니스에서 정확하게 ...

Go Language에서 메시지 대기열을 구현하기 위해 Redisstream을 사용하는 문제는 Go Language와 Redis를 사용하는 것입니다 ...

H5 프로젝트를 실행하려면 다음 단계가 필요합니다. Web Server, Node.js, 개발 도구 등과 같은 필요한 도구 설치. 개발 환경 구축, 프로젝트 폴더 작성, 프로젝트 초기화 및 코드 작성. 개발 서버를 시작하고 명령 줄을 사용하여 명령을 실행하십시오. 브라우저에서 프로젝트를 미리보고 개발 서버 URL을 입력하십시오. 프로젝트 게시, 코드 최적화, 프로젝트 배포 및 웹 서버 구성을 설정하십시오.

Python : 모래 시계 그래픽 도면 및 입력 검증을 시작 하기이 기사는 모래 시계 그래픽 드로잉 프로그램에서 Python 초보자가 발생하는 변수 정의 문제를 해결합니다. 암호...

Typecho 라우팅 일치 규칙 분석 및 문제 조사이 기사는 Typecho 플러그인 라우팅 등록 및 실제 일치 결과의 일관되지 않은 결과에 대한 질문을 분석하고 답변합니다.
