从私有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的基本流程。

相关文章
|
9天前
|
存储 网络安全 开发工具
【GIT】Git常用命令学习
【GIT】Git常用命令学习
21 1
|
20天前
|
存储 安全 项目管理
Git项目管理——Git常用命令汇总(五)
Git项目管理——Git常用命令汇总(五)
21 1
|
1天前
|
存储 开发工具 git
Git工作流程:如何在团队中协作?
Git工作流程:如何在团队中协作?
|
1天前
|
Shell 开发工具 git
如何使用git上传代码github仓库
如何使用git上传代码github仓库
|
2天前
|
人工智能 运维 中间件
一文了解Git(所有命令)附带图片
一文了解Git(所有命令)附带图片
9 0
|
2天前
|
Shell Linux 网络安全
Git仓库的介绍和使用
Git仓库的介绍和使用
|
10天前
|
存储 IDE 开发工具
Git 常用命令大全
Git 常用命令大全
28 0
|
Web App开发 关系型数据库 Shell
自助搭建git服务
Docker容器方式搭建Gogs步骤 准备镜像:(从DockerHub下载) gogs:0.11.53 mysql:5.7 运行容器**注意卷的挂载以及端口的暴露** example: 1> 运行gog容器, 3000端口是Web页面端口,22是用户ssh方式访问git服务的端口.
1950 0
|
1月前
|
缓存 数据可视化 网络安全
Git命令大全
Git命令大全
71 1
|
1月前
|
开发工具 git
Git教程:深入了解删除分支的命令
【4月更文挑战第3天】
265 0
Git教程:深入了解删除分支的命令