从私有Git仓库的搭建到命令的使用再到分支管理,全流程全套服务包您满意(三)

简介: Git是一款开源的分布式版本控制系统,可以有效,高速处理从很小到非常大的项目版本管理。 Git是通过C语言开发实现的。

远程仓库(多人协作)

前面说了那么多,好像都是一个人在本地操作,没有涉及到多人协作的情况。这在团队开发中肯定是不可能的啦,因为我们是一个team。那么多人协作的情况涉及哪些操作呢?

本地仓库关联远程仓库

git remote add origin http://192.168.40.138/ai-edu/git-demo.git

或者,推荐使用下面这种,因为前面配置了SSH公钥和私钥

git remote add origin git@gitee.com:jayxiang31/python_learn.git

第一次先拉取远程库中的README.md和.gitignore等文件

git pull --rebase origin master

克隆远程仓库

前面第三章已经搭好了私有的Git仓库管理器GitLab。同时也创建了一个名为git_test的仓库。现在要做的就是将远程仓库克隆下来。克隆的命令是git clone

git clone http://192.168.40.138/ai-edu/git_test.git

其中http://192.168.40.138/ai-edu/git_test.git 是远程仓库的地址。

当然也可以在IDEA上直接通过图形界面操作,还省去了导入项目的过程。其操作步骤是:

1.选中File->New->Project from Version Control->Git。如下图所示:

2.在URL中填入远程仓库的地址,点击Clone按钮。如下图所示:

需要注意的是默认情况下只会克隆master分支,其他的分支不会被克隆下来。其他的分支需要通过git pull命令拉取,后面会详细介绍。

删除远程Git仓库

git remote rm origin

查看远程分支

通过git remote命令可以查看远程仓库,origin表示远程主机。

通过git remote -v 命令可以查看远程仓库详细的信息,包括远程仓库的地址。

$ git remote -v
origin  http://192.168.40.138/ai-edu/git_test.git (fetch)
origin  http://192.168.40.138/ai-edu/git_test.git (push)

上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

推送分支

现在将远程仓库克隆下来了,那么该如何将当前分支上所有的本地提交推送到远程库呢?答案是通过git push命令,其语法结构是git push <remote branch> <local branch> 其中<remote branch>表示远程分支名,<local branch>表示本地分支名。

git push origin master

该语句表示将本地的master分支推送到远程的origin分支上。

该语句表示将本地的master分支推送到远程的origin分支上。在实际应用中会在git push命令后面加上-u参数,就像git push -u origin master这样。这是因为如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push。那么哪些分支该与远程分支保持一致呢?一般认为:

1.master 分支是主分支,需要时时与远程同步

2.dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步

3.bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

4.feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

说白了就是需要团队协作的分支一定要推送到远程库,否则则不需要。

创建远程分支

通过git push命令还能创建远程分支。

git push origin dev

假设你本地已经有了dev分支。通过上面的命令可以将dev分支推送到远程库,并创建远程的dev分支。

拉取分支

通过git pull命令可以拉取远程仓库的数据和分支信息。假设如下这个场景:你同事在他本地创建了一个dev分支,并提交到了远程库。同时你也在本地创建了一个dev库,当你push时会推送失败。结果如下图所示:


因为你同事的最新提交和你试图推送的的提交有冲突。解决的办法就是根据Git的提示,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突后,在推送。

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
    git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
    git branch --set-upstream-to=origin/<branch> dev

git pull也失败了。原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

关联本地分支和远程分支

$ git branch --set-upstream-to=origin/dev dev

关联好本地分支和远程分支之后,在pull就能成功了。这回git pull成功,但是合并有冲突,需要手动解决,解决的方式也是在本地手动处理冲突文件,解决后,提交,在push。

拉取远程分支并创建本地分支

git checkout -b 本地分支名x origin/远程分支名x

该命令会在本地新建分支x,并自动切换到该本地分支x。

采用此种方法建立的本地分支会和远程分支建立映射关系。

例如:

git checkout -b dev origin/dev

删除远程分支

通过

git push origin :dev

命令可以删除远程dev分支。但是这时候本地的dev分支还是存在的。所以还需要通过git branch -d dev删除本地的dev分支。

查看分支

通过git branch可以查看本地分支

通过git branch -a 可以查看本地分支和远程分支。

版本回退

在实际开发中我们经常会碰到这样一个场景,比如:你误提交了一段有问题的代码,导致其他同事更新代码之后项目启动不了,这时候该怎么办呢?我们首先想到的就是将版本回退。回退到之前那个没有问题的版本。

通过git log 命令找到当前的仓库所有的提交日志。然后,找到你需要回退到的版本。如下图所示:

回退到上一个版本:git reset HEAD

回退到指定版本:git reset commitId 其中commitId是指定版本的版本号,比如这里将版本信息回退到b50c9bdcbf9641d33e4b531bd96dc1f27d4bf602 这个版本。那么命令就是:

git reset b50c9bdcbf9641d33e4b531bd96dc1f27d4bf602

回退之后,再次通过git log查看,则最新的提交日志已经变成了hello 提交这个版本了。

当然,通过IDEA来回退则更加的简单。直接在Version Control->Log 在待回退到的版本上右键,选中Reset Current Branch to Here 即可。

其实回退操作的本质,就是将HEAD指针的指向要回退的那个版本上。

将多次提交合并成一次提交

在实际开发中我们经常需要进行代码Review。如果同一个功能点分了很多次提交话,那么在进行代码Review时则会非常的不方便。这时候就需要将多次提交合并成一次提交。具体的步骤是:

1.通过git switch <branchname>命令切换到需要合并提交的代码的分支,比如:git switch test

2.查看需要合并的提交,如下有三次提交需要合并

3.通过rebase命令修改提交指令,这里git rebase -i HEAD~3 表示查看最近的三次提交命令,合并几次则需要将对应的数字改成几。

git rebase -i HEAD~3

执行该命令之后会打开提交指令的日志文件,这里只保留第一次的提交,将另外的两次提交改成 s

保存之后会进入另外一个文件,该文件无需修改,直接输入:q! 命令退出即可。操作之后我们可以看到之前的三次提交记录变成了一次提交记录。

4. 如何要把这次提交合并到其他分支只需要切换到目标分支,执行如下命令;

git cherry-pick <commitid>

分支重命名

git branch -m oldname newname

8. 标签管理

标签管理比较简单,再此只是简单描述一下。

#创建标签 v1.0
git tag v1.0
#查看标签
git tag
#删除标签v1.0
git tag -d v0.1
#*****还可以加上-a参数来创建一个带备注的tag,备注信息由-m指定。如果你未传入-m则创建过程系统会自动为你打开编辑器让你填写备注信息。
git tag -a v1.0 -m "这是第一次发版"
#推送标签
git push origin --tags
#删除远程标签
git push origin :refs/tags/v1.0

回滚某次提交

回滚本地仓库的某次提交,回滚的命令是

git revert <subcommand>

例如:本次提交的commandId 是311737d3

git revert 311737d3

总结

一万六千多字,我写的累,你们看的也累!!!文中奉上几张美女照片给各位读者大大解解乏。我真真正正的肝了两天了。现在终于肝完了。希望对读者朋友们有所帮助。

看文字实在是太累了。下面就用一张图来做一个总结吧。

这张图清晰的表明了Git的基本流程。

相关文章
|
14天前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
36 1
[Git]入门及其常用命令
|
1月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
110 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
17天前
|
开发工具 git 开发者
|
17天前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
39 0
|
1月前
|
开发工具 git
【Git快速入门】Git代码管理手册与协同开发之分支管理与协作(五)
【Git快速入门】Git代码管理手册与协同开发之分支管理与协作(五)
|
Apache 开发工具 git
提交PR的git 流程
上次花了点时间让CarbonData集成到StreamingPro中,方便大家更快速的体验到CarbonData的好处,集成完毕后就写了篇文章:让CarbonData使用更简单 文章里面有下载链接,下载下来就能用,基本不需要你了解carbondata的知识就可以直接用。
3508 0
|
3月前
|
存储 开发工具 git
|
3月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
67 0
|
2月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
2月前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7