git仓库项目管理最全总结
创始人
2024-04-02 22:06:06
0

git知识点最全总结

    • 1.git简介
    • 2.git下载与安装
  • 3.git工作流程图
    • 3.1git最基本常用命令
    • 3.2配置
      • 3.2.1常用指令配置别名(可选)
      • 3.2.2解决GitBash乱码问题
      • 选择 merge 还是 rebase?
  • 4.命令行
      • Git 标签的使用
      • Git 分支的使用
      • 介绍 Git 冲突处理经验
      • Git 远程操作相关
      • Git Flow 使用简介

1.git简介

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

Git是分布式的,Git不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用Git并且有个 中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的PC是一样的。我们可以 把它当做一个开发者的pc就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不 过“交换”修改不方便而已。 git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众 多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002 年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代 码。到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订 了若干目标: 速度简单的设计 对非线性开发模式的强力支持(允许成千上万个并行开发的分支) 完全分布式 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量),安装参见:安装链接

GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。

Git本身完全可以做到版本控制,但其所有内容以及版本记录只能保存在本机,如果想要将文件内容以及版本记录同时保存在远程,则需要结合GitHub来使用。使用场景:

无GitHub:在本地 .git 文件夹内维护历时文件
有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历时文件托管在远程仓库

2.git下载与安装

下载git的网址直达,进去后选择要下载的版本和需要安装的系统
在这里插入图片描述
下载完后得到如图
在这里插入图片描述
然后傻瓜式安装,一路next即可。
那么如何判断自己已经安装成功了呢?在桌面右击选择,如果可以看到里面的下面了两个图标,代表你已经安装成功了。
在这里插入图片描述
对上面两个的解释,我们学的linux指令都可以在这里的 Git Bash使用
在这里插入图片描述
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用
该用户信息

在这里插入图片描述

3.git工作流程图

在这里插入图片描述

3.1git最基本常用命令

命令如下:

  1. clone(克隆): 从远程仓库中克隆代码到本地仓库
  2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
  3. add(添加): 在提交前先将代码提交到暂存区
  4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于
    fetch+merge
  7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

3.2配置

  1. 打开Git Bash
  2. 设置用户信息
    输入指令:
git config --global user.name “xxx”  //xxx指的是你的用户名
git config --global user.email "xxxx.@xx.com"  //输入你的邮箱

3.查看配置信息

git config --global user.name   //用来查看你的用户名
git config --global user.email  //用来查看你的邮箱

3.2.1常用指令配置别名(可选)

有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。

  1. 打开用户目录,创建 .bashrc 文件
    部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行 touch ~/.bashrc
    在这里插入图片描述
  2. 在 .bashrc 文件中输入如下内容:
#用于输出git提交日志 
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'#用于输出当前目录所有文件及基本信息alias ll='ls -al
  1. 打开gitBash,执行 source ~/.bashrc
    在这里插入图片描述

3.2.2解决GitBash乱码问题

  1. 打开GitBash执行下面命令
git config --global core.quotepath false
  1. ${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8" 
export LC_ALL="zh_CN.UTF-8"

不同点:

merge操作会生成一个新的节点,之前的提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。

解决冲突时。merge 操作遇到冲突的时候,当前 merge 不能继续进行下去。手动修改冲突内容后,add 修改,commit 就可以了。而rebase操作的话,会中断 rebase,同时会提示去解决冲突。解决冲突后,将修改 add 后执行git rebase –continue继续操作,或者git rebase –skip忽略冲突。

git pull和git pull --rebase区别:git pull做了两个操作分别是”获取”和”合并”。所以加了 rebase 就是以 rebase 的方式进行合并分支,默认为 merge。

总结:

选择 merge 还是 rebase?

merge 是一个合并操作,会将两个分支的修改合并在一起,默认操作的情况下会提交合并中修改的内容

merge 的提交历史忠实地记录了实际发生过什么,关注点在真实的提交历史上面

rebase 并没有进行合并操作,只是提取了当前分支的修改,将其复制在了目标分支的最新提交后面

rebase 的提交历史反映了项目过程中发生了什么,关注点在开发过程上面

merge 与 rebase 都是非常强大的分支整合命令,没有优劣之分,使用哪一个应由项目和团队的开发需求决定

merge 和 rebase 还有很多强大的选项,可以使用 git help 查看

  1. Git stash 是什么?它的相关使用方式命令
    git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到 Git 栈中。

git stash pop: 从 Git 栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个 Stash 的内容,所以用栈来管理,pop 会从最近的一个 stash 中读取内容并恢复。

git stash pop –index stash@{0}: 恢复编号为 0 的进度的工作区和暂存区。

git stash apply stash@{1} 以将你指定版本号为 stash@{1}的工作取出来

git stash drop[] 删除某一个进度,默认删除最新进度

git stash list: 显示 Git 栈内的所有备份,可以利用这个列表来决定从那个地方恢复。

git stash clear: 清空 Git 栈。此时使用 gitg 等图形化工具会发现,原来 stash 的哪些节点都消失了

恢复工作进度
git stash pop [–index] []
–index 参数:不仅恢复工作区,还恢复暂存区
指定恢复某一个具体进度。如果没有这个参数,默认恢复最新进度

这是git stash保存进度的完整命令形式
git stash [save message] [-k|–no-keep-index] [–patch]
-k和–no-keep-index指定保存进度后,是否重置暂存区
–patch 会显示工作区和HEAD的差异,通过编辑差异文件,排除不需要保存的内容。和git add -p命令类似

使用save可以对进度添加备注
git stash save “这是保存的进度”
8. Git 只从暂存区删除,从工作空间删除的命令分别是什么?
git rm --cached

git rm
git commit

4.命令行

Git 标签的使用

列出现有的标签
git tag

打标签
git tag -a v1.01 -m “Relase version 1.01”

查看相应标签的版本信息
git show v1.4
-a 选项,创建一个含附注类型的标签

-m 选项,指定了对应的标签说明

Git 分支的使用

查看本地分支
git branch

#查看远程分支
git branch -r

创建本地分支(注意新分支创建后不会自动切换为当前分支)
git branch [name]

切换分支
git checkout [name]

创建新分支并立即切换到新分支
git checkout -b [name]

强制删除一个分支
git branch -D [name]

合并分支(将名称为[name]的分支与当前分支合并)
git merge [name]

查看各个分支最后提交信息
git br -v

查看已经被合并到当前分支的分支
git br --merged

查看尚未被合并到当前分支的分支
git br --no-merged

介绍 Git 冲突处理经验

介绍 Git 冲突处理经验,以及 merge 和 rebase 中的 ours 和 theirs 的差别。

merge 和 rebase 对于 ours 和 theirs 的定义是完全相反的。在 merge 时,ours 指代的是当前分支,theirs 代表需要被合并的分支。而在 rebase 过程中,ours 指向了修改参考分支,theirs 却是当前分支。因为 rebase 隐含了一个git checkout upstream的过程,将HEAD从 local 分支变成了 upstream 分支。git 会在 rebase 结束后撤销这个改变,但它已经不可避免地影响了冲突的状态,使 rebase 中 ours 和 theirs 的定义与 merge 截然相反。因此,在使用 ours 与 theirs 时请格外小心。

Git 远程操作相关

(1). clone
git clone <版本库的网址> git clone <版本库的网址> <本地目录名>

克隆jQuery的版本库
git clone https://github.com/jquery/jquery.git

git clone -o jQuery https://github.com/jquery/jquery.git
(2). remote

列出所有远程主机
git remote

使用-v选项,可以参看远程主机的网址
git remote -v

可以查看该主机的详细信息
git remote show <主机名>

添加远程主机
git remote add <主机名> <网址>

删除远程主机
git remote rm <主机名>

修改远程主机名称
git remote rename <原主机名> <新主机名>
(3). fetch
取回所有分支(branch)的更新到本地
git fetch <远程主机名>

取回某的特定分支的更新
git fetch <远程主机名> <分支名>

取回origin主机的master分支的更新
git fetch origin master

所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。比如origin主机的master,就要用origin/master读取。可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支
git merge origin/master
git rebase origin/master
(4). pull
git pull <远程主机名> <远程分支名>:<本地分支名>

取回origin主机的next分支,与本地的master分支合并
git pull origin next:master

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin next

上面的命令实质上等同于先做git fetch,再做git merge。
git fetch origin
git merge origin/next

合并需要采用rebase模式
git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
(5). push
git push <远程主机名> <本地分支名>:<远程分支名>

注意:分支推送顺序的写法是”<来源地>:<目的地>”,所以 git pull 是”<远程分支>:<本地分支>”,而 git push 是”<本地分支>:<远程分支>”。

如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。

将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建
git push origin master

省略了本地分支,以下等同,删除origin主机的master分支
git push origin :master
git push origin --delete master

如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略
git push origin

如果当前分支只有一个追踪分支,那么主机名都可以省略。
git push

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push
git push -u origin master

不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机
git push --all origin

强制推送
git push --force origin

git push不会推送标签(tag),除非使用–tags选项
git push origin --tags

Git Flow 使用简介

就像代码需要代码规范一样,代码管理同样需要一个清晰的流程和规范。三种广泛使用的工作流程:

Git flow

Github flow

Gitlab flow

三种工作流程,有一个共同点:都采用”功能驱动式开发”(Feature-driven development,简称 FDD)。它指的是,需求是开发的起点,先有需求再有功能分支(feature branch)或者补丁分支(hotfix branch)。完成开发后,该分支就合并到主分支,然后被删除。最早诞生、并得到广泛采用的一种工作流程,就是Git flow。

它最主要的特点有两个。首先,项目存在两个长期分支,分别是:主分支 master、开发分支 develop。其次,项目存在三种短期分支,分别是:功能分支(feature branch)、补丁分支(hotfix branch)、预发分支(release branch),一旦完成开发,它们就会被合并进 develop 或 master,然后被删除。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...