이 글에서는 Git 관련 내용을 주로 소개합니다. Git에는 SVN과 같은 중앙 서버가 없습니다. Github을 원격 창고로 사용할 때의 몇 가지 문제점을 살펴보겠습니다. 모두를 돕습니다.
추천 학습: "Git 학습 튜토리얼"
Git에는 SVN과 같은 중앙 서버가 없습니다.
Git를 통해 코드를 공유하거나 다른 개발자와 공동 작업하려는 경우 현재 사용하는 Git 명령은 모두 로컬에서 실행됩니다. 그런 다음 다른 개발자가 연결할 수 있는 서버에 데이터를 저장해야 합니다.
이 예에서는 Github를 원격 창고로 사용합니다. 먼저 Github의 간결한 튜토리얼을 읽어보세요.
원격 웨어하우스 명령
1. 현재 원격 라이브러리 보기
2. 원격 웨어하우스 추가
git remote add를 실행하여 새 원격 Git 웨어하우스를 추가하고 편리한 약어를 지정합니다.
3. $ git fetch
이 명령은 원격 저장소에 액세스하여 아직 가지고 있지 않은 모든 데이터를 가져옵니다. 실행이 완료되면 해당 원격 저장소의 모든 분기에 대한 참조를 갖게 되며 언제든지 병합하거나 볼 수 있습니다.
원본 아래의 모든 브랜치가 복사됩니다.
git fetch 명령은 데이터를 로컬 저장소에만 다운로드하며 현재 작업을 자동으로 병합하거나 수정하지 않습니다. 준비가 되면 작업에 수동으로 통합해야 합니다.
git pull 명령은 원격 브랜치를 자동으로 가져와서 현재 브랜치에 병합합니다.
기본적으로 git clone 명령은 복제된 원격 웨어하우스의 마스터 브랜치(또는 다른 이름을 가진 기본 브랜치)를 추적하도록 로컬 마스터 브랜치를 자동으로 설정합니다. ). git pull을 실행하면 일반적으로 원래 복제된 서버에서 데이터를 가져오고 자동으로 현재 분기에 병합을 시도합니다.
3. 원격 창고로 git push
이 명령은 복제 서버에 대한 쓰기 권한이 있고 이전에 아무도 푸시한 적이 없는 경우에만 적용됩니다. 다른 사람과 동시에 복제하고 그 사람이 먼저 업스트림으로 푸시한 다음 귀하가 업스트림으로 푸시하면 푸시가 의심 없이 거부됩니다. 푸시하기 전에 그들의 작업을 잡고 귀하의 작업에 병합해야 합니다.
4. 원격 저장소 보기
원격 저장소에 대한 자세한 정보를 보려면 git remote show 명령을 사용할 수 있습니다.
5. 원격 창고 이름 바꾸기
git 원격 rename을 사용하여 원격 창고의 약어 수정
6. 원격 창고 제거
git 원격 제거 또는 git 원격 rm
7. 태그: 창고 A를 지정할 수 있습니다. 기록의 특정 커밋에는 중요성을 나타내기 위해 태그가 지정됩니다. 사람들이 릴리스 노드를 표시하기 위해 이 기능을 사용한다는 것이 더 대표적입니다.
1) 태그 나열
2) git tag -l/list 와일드카드 방식으로 태그를 나열합니다
3) 경량 태그: 특정 항목에 대한 참조일 뿐입니다. 커밋, 기본적으로 커밋 체크섬을 파일에 저장 - 다른 정보는 저장되지 않습니다
4) 주석이 달린 태그: Git 데이터베이스에 저장된 완전한 개체로, 태그를 지정한 사람의 이름, 이메일 주소, 날짜 및 시간을 확인할 수 있으며 태그 정보도 있습니다
5) 나중에 태그 지정: 태그 역사적 프로젝트
6) 공유 태그: git push 명령은 태그를 원격 웨어하우스 서버로 전송하지 않습니다. git push Origin을 실행할 수 있습니다.
git push origin --tags:将会把所有不在远程仓库服务器上的标签全部传送到那里。 ![Git 원격 웨어하우스(Github) 지식 포인트 요약](https://img-blog.csdnimg.cn/498567ecae294ae9af392a975334650f.png)
7) 로컬 저장소에서 태그를 삭제하려면
git tag -d
위 명령은 원격 저장소에서 이 태그를 제거하지 않는다는 점에 유의하세요. git push :refs/tags/를 사용해야 합니다. 원격 업데이트 저장소:
위 명령은 원격 저장소에서 이 태그를 제거하지 않습니다.
첫 번째 변형인 git push :refs/tags/ :
$ git push Origin :refs /tags/v1을 사용해야 합니다. 4-lw
위 작업의 의미는 원격 태그 이름에 콜론 앞의 null 값을 푸시하여 효율적으로 삭제한다는 것입니다.
원격 태그를 삭제하는 더 직관적인 두 번째 방법은 다음과 같습니다.
$ git push Origin --delete
8. git 브랜치 관리
참고: git 브랜치에는 브랜치 앞의 * 문자가 표시됩니다.
1) git checkout 테스트는 테스트 분기를 생성합니다.
2) git checkout 테스트는 분기를 전환하고 현재 분기를 볼 수 있습니다. HEAD를 현재 분기로 지정할 수 있습니다.
[ git checkout -b 분기 생성 및 전환 ]
3) 공개 제출 의견 테스트 + 브랜치 테스트를 별도로 진행하면 헤드 포인터가 앞으로 이동합니다
두 브랜치의 벤치마크는 각각 9623a70fe입니다. 별도로 제출하면 해당 포인터가 변경됩니다
실행 git log --oneline --design --graph --all , 제출 기록, 각 브랜치에 대한 포인터 및 프로젝트의 브랜치 포크를 출력합니다.
포크 상황:
Branch merge git merge [여론 브랜치 수정 없음, 핫픽스 브랜치에 새로운 제출] – 3자 합병
핫픽스는 여론 테스트 브랜치를 기반으로 풀링되고, 핫픽스에서 제출물을 생성합니다. 핫픽스 브랜치의 제출물을 확인하세요. ID는 85bb*입니다. 여론 브랜치로 다시 전환하고, git merge를 실행하면 여론 브랜치의 제출 ID도 핫픽스 브랜치에 의해 생성된 85bb*로 고급화된 것을 확인할 수 있습니다
여론 분기 및 핫픽스 분기의 변경 사항 그림:
분기 병합 git merge [공개 의견 분기] /테스트 분기에서 새 제출 생성]
테스트는 여론 테스트 분기를 기반으로 가져오고 테스트 분기/여론 여론 분기가 핫픽스 분기의 내용을 병합한 후 테스트 분기가 여론 분기를 병합하면 테스트 분기가 직접 새로운 분기를 생성하는 것으로 나타났습니다. id41b1*을 커밋하면 여론 브랜치의 해당 d804와 85는 병합되지 않습니다. 이때 새 ID는 테스트 브랜치의 Da4와 여론 브랜치의 85b에 해당합니다. ) git 체크박스 테스트
2) git merge 여론 분기
4)git branch -v 查看每个分支的最后一次提交
5)git branch --merged/–no-merged 过滤这个列表中已经合并或尚未合并到当前分支的分支
6)git branch -d
包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失败,除非用-D
9、远程分支
1) git ls-remote 来显式地获得远程引用的完整列表
通过 git remote show 获得远程分支的更多信息
2)origin/master和master区别
master : 它代表本地的某个分支名。 origin master 代表着两个概念,前面的 origin 代表远程名,后面的 master 代表远程分支名 origin/master 本地分支,是从远程拉取后,在本地建立的一份拷贝【是用来和远程分支对应的,一般不可见】 举几个例子可能会更加清晰地说明问题: ① 执行 git fetch origin master 时,它的意思是从名为 origin 的远程上拉取名为 master 的分支到本地分支 origin/master 中。既然是拉取代码,当然需要同时指定远程名与分支名,所以分开写。 ②执行 git merge origin/master 时,它的意思是合并名为 origin/master的分支到当前所在分支。既然是分支的合并,当然就与远程名没有直接的关系,所以没有出现远程名。需要指定的是被合并的分支。 ③执行 git push origin master 时, 推送本地的 master 分支到远程origin, ④ 一次性拉取多个分支的代码:git fetch origin master dev1 dev2 ⑤ 一次性合并多个分支的代码:git merge origin/master 分支1 分支2 分支3
2)如果远程仓库有人提交内容,那么远程仓库就会向前移动,而本地origin/master如果不拉取,将还保持不动,如果希望本地同远程保持一致,可以通过git fetch拉取远程仓库数据,
git fetch
3) git push origin 分支名
推送本地的 舆情测试 分支,将其作为远程仓库的 舆情测试 分支
如果并不想让远程仓库 上的分支叫做 舆情测试 ,可以运行 git push origin 舆情测试 :test0421 来将本地的 舆情测试 分支推送到远程仓库上的 test0421 分支。
4)checkout 的操作
通过 git checkout test0421 会把分支切换到test0421分支上
这个操作会处于‘detached Head’ 状态,在这种状态下不会修改origin/test0421上的数据,可以修改并提交做一些实验性的操作,但是切换回test0421分支后,再次从test0421切换回origin/test0421时,之前的改变不会同步,因为origin/test0421 是用户只读的
5)git push origin --delete 分支名 删除远程仓库分支【本地仓库还有数据】
6)rebase变基:使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
首先找到这两个分支(即当前分支 Test0421、变基操作的目标基底分支 Test0420) 的最近共同祖先 85bb,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 3467, 最后以此将之前另存为临时文件的修改依序应用
Test0420 使用git merge 合并Test0421内容,结果两个分支完全一致,可以发现提交记录没有出现分拆,而是保持在一条直线上【可以比较前面get merge环节中结果出现分叉】
rebase时一系列提交按照原有次序依次应用,只是当前分支的提交id值改变
merge时多次提交合并成一次,生成新的提交id
总结:无论是通过变基,还是通过三方合并,整合的最终结果所指向的快照始终是一样的,只不过提交历史不同罢了。 变基是将一系列提交按照原有次序依次应用到另一分支上,而合并是把最终结果合在一起。
推荐学习:《Git学习教程》
위 내용은 Git 원격 웨어하우스(Github) 지식 포인트 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!