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

相关文章
|
27天前
|
开发工具 git
git 常用命令
这些只是 Git 命令的一部分,Git 还有许多其他命令和选项,可根据具体需求进行深入学习和使用。熟练掌握这些命令能够帮助你更高效地管理代码版本和协作开发。
|
20天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
27 3
|
1月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
52 1
[Git]入门及其常用命令
|
5天前
|
运维 测试技术 持续交付
代码管理的艺术:你的团队是否还在为 Git 分支管理头疼?
本文回顾了作者从2~3人初创团队到百人技术团队的经历,分享了代码管理工具从无到SVN再到Git的演变。重点介绍了Git Flow和GitHub Flow两种常用的Git分支管理模型,分析了它们的适用场景和优缺点。Git Flow适合中大型项目,而GitHub Flow则更适合小型团队和Web应用开发。
17 0
|
1月前
|
开发工具 git
git分支管理master/hotfix/develop/feature/release
采用合理的Git分支管理模型可以显著提升团队协作效率和代码管理的质量。本文介绍的 `master`、`develop`、`feature`、`release`和 `hotfix`分支模型是一个行之有效的方法,适用于大多数软件开发项目。通过清晰地划分各个分支的职责,团队成员可以更专注于各自的开发任务,同时确保代码库的稳定性和可维护性。
53 2
|
1月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
55 2
|
2月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
142 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
2月前
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
184 1
git学习三:git使用:删除仓库,删除仓库内文件
|
1月前
|
测试技术 开发工具 git
掌握Git分支管理,提升团队协作效率
掌握Git分支管理,提升团队协作效率
31 0
|
2月前
|
开发工具 git 索引
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
99 4