前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一篇文章全面了解Git!

一篇文章全面了解Git!

作者头像
萌兔IT
发布2019-07-26 14:14:24
3470
发布2019-07-26 14:14:24
举报
文章被收录于专栏:萌兔it萌兔it

Hello小伙伴们,不知道大家在开发中会不会遇到团队协作的难题呢,其实团队协作在开发中很重要,能够自动化的将不同人的工作合并减少很多人力,Git就是一个很好的团队协作工具,而且Git还能够用来对版本进行控制呢,下面就让我们一起了解一下Git吧~今天的教程来自兔妞的小伙伴?哦~~

Git是分布式版本控制工具,有本地仓库以及远程仓库之分,本地仓库主要用来进行开发的工作提交修改,远程仓库主要用来进行版本的控制。相信小伙伴们对于git已经不陌生了吧,下面我们先了解一下git仓库的整体结构吧:

1

(1) Github中upstream和origin的区别

在git中我们有本地仓库,origin 仓库和upstream仓库。Upstream仓库是源的仓库,我们经过fork操作可以将原始仓库克隆一份到自己的远程仓库,也就是我们所说的origin仓库,然后我们使用git的clone命令可以将代码克隆到本地仓库,这样就完成了下载代码的过程,在这个基础上我们可以进行代码的开发。

通过上述讲解小伙伴们可能已经大致明白这两个仓库的区别,但是我们要记住对于upstream仓库我们只可以进行拉取代码也就是fetch操作,用来保证本地仓库和远程源仓库同步(除非你已经明确声明是upstream仓库的贡献者),但是对于origin仓库来说,它代表我们自己的远程仓库,所以我们可以进行pull和push操作,我们可以通过提pullrequest的方式从origin仓库贡献代码到upstream仓库,这样大家是不是就明白多了。下面画一个简单的图来帮小伙伴们理解一下。

2

(2) git 的数据流向分析

作为刚开始使用git的小伙伴们来说,git的数据流向一直是困扰我们的问题,我们不知道在终端敲下的命令代表的意义到底是什么,也可能不明白这些分支之间到底代表什么(大神可以绕步,作为小白的我反正当初啥也不知道)下面就让小伙伴们豁然开朗一下吧。

3

(3) git创建及合并分支

在git的版本管理过程中,它都会把每次提交串成一条时间线,这条线就是一个分支,假设目前我们只存在master分支,那么现在的HEAD指向的就是当前的master分支(至于HEAD是什么,我感觉其实HEAD就像一个指针指向当前的分支),这时候master指向目前代码的最新提交,随着每次的提交master的分支都会慢慢增长,这时我们创建一个新的分支test并切换到test分支(gitcheckout -b test),此时的HEAD会指向当前的test的分支,同时test将会指向与master进度一致的提交,所以这个创建过程只是新增了一个test指针,同时改变HEAD的指向,所以过程非常迅速。

现在开始我们开始在test的分支上进行代码的开发工作,这个时候的test的分支已经先于master分支了,所以目前我们需要做的就是要合并test分支的代码到master,首先切换分支到master(gitcheckout master),然后直接将master指向test分支的当前提交,这样就完成了合并,是不是很迅速。需要注意的是在合并时git可能会采用Fastforward模式,这样在合并分支后删除test分支就会丢掉test分支信息,可以采用强制禁用这个模式的方式通过新生成一个commit完成合并操作,这样从分支历史上就可以看到分支的信息了。

4

(4) git reset操作解析

我们在进行代码的编写时,有时会发现自己写的内容写错了,但是这只代码已经commit了,所以这个时候就需要进行reset操作,这时候我们首先需要获取到想要回退的commitid,推荐小伙伴们使用gitlog --pretty=oneline命令来进行commitid的查询,比如查询到id为123后使用gitreset –hard 123的命令来进行回退,但是比如你又后悔进行了回退操作,这个时候想要回到以前的版本,可以使用git reflog命令查看历史的命令可以找到相应的之前版本的commitid 使用reset命令就可以恢复到以前的版本了。

5

(5) git fetch与pull的区别

git fetch和pull都可以将代码从upstream仓库拉取到本地,但是他们之间有很大的区别,git fetch主要用来将代码从upstream仓库代码拉取到本地,但是不会进行merge操作,git pull则会在拉取代码后进行merge操作

所以在一些需要快速拉取代码的时候可以采用git pull操作,但是有时候我们需要有选择的合并,这时候可以采用git fetch和git merge操作。

6

(6) 现在为大家整理一下git常用的一些场景命令吧~

git 向上提交代码命令:

git status

git addxxx

git commit – m“xxxx”

git push origin xxx

git 拉取代码:

git fetch upstream xxx

git merge upstream/xxx

git 解决冲突:

git stash

git fetch upstream xxx

git merge upstream/xxx

git stash list

git stash pop

git删除文件:

git status

git rmxxx

7

(7) git 常用命令总结

开始创建仓库或克隆:

clone 把远程库的代码复制一份到本地

init 创建一个新的库

在本分支对代码进行更改

add 添加文件改动

mv 移动或重命名文件、文件夹等

reset Reset current HEAD to the specified state把当前的代码回滚到指定状态

rm 删掉文件曾经存在的轨迹

检查历史、状态

bisect 通过二分树找到在哪次commit引入的bug

grep 找出来含有符合要找的格式的地方

log 查看提交日至

reflog 查看命令历史

show 显示各种类型的对象(日志消息、文本差异等)

status 显示工作树状态

有关自己分支

branch 列举创建删除分支

checkout 切换分支

commit 向库提交修改

diff 显示提交历史之间的不同

merge 把几个开发版本组合在一起

rebase 类似merge但是提交历史更简洁

tag 通过GPG创建、列举、删除或辨别tag对象

协作

fetch 下载对象并从另一个仓库引用

pull 从别的仓库获取并整合到本地分支

push 通过关联对象修改远程库内容

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌兔it 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prowork 团队协同
ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档