• git仓库项目管理最全总结


    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"  //输入你的邮箱
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.查看配置信息

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

    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
    • 2
    • 3
    • 4
    1. 打开gitBash,执行 source ~/.bashrc
      在这里插入图片描述

    3.2.2解决GitBash乱码问题

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

    不同点:

    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,然后被删除。

  • 相关阅读:
    [GYCTF2020]EasyThinking
    istio gateway入口流量路由管控
    Flet-基于Flutter的Python跨平台开发框架
    spring boot网上眼镜商场毕业设计-附源码241659
    C语言入门实战(13):十进制数转二进制
    LeetCode·707.设计链表·架构题
    酷开科技全球化智能大屏OS——Coolita ,将大屏数字化服务进行到底
    【云原生之Docker实战】部署CasaOS家庭云系统管理平台
    如何找出最优的【SVC】核函数和参数值—以乳腺癌数据集为例
    apt-get手册翻译
  • 原文地址:https://blog.csdn.net/weixin_52924633/article/details/124082549