Git 简单入门(二)

分支管理

  1. 分支的作用
    1. 提交不完整的代码到主分支上会导致别人不能正常开发
    2. 如果等代码全部写完再提交,存在丢失每天进度的风险 详见:https://segmentfault.com/q/1010000010105733
  2. 新建与分支合并
    1. 过程
      1. Git 创建分支(例:dev) 除了增加一个dev指针外,让HEAD指向dev,工作区的文件没有变化
      2. 然后对工作区的修改和提交就是针对dev分支(HEAD指向的分支)
      3. 分支合并,直接将master指向dev的当前提交
      4. 然后可以将dev分支(dev指针)删掉
    2. 命令,例:
      1. 创建分支 创建dev分支并切换到dev分支 git checkout -b dev 上面的命令相当于 git branch dev git checkout dev
      2. 切换分支 git checkout master
      3. 合并指定分支到当前分支
        1. 正常合并 git merge dev
        2. 如果在这个过程之前 主分支上面的代码也被你的同伴修改过,这样会出现冲突,这时候使用 git status 可以查看一下冲突的文件,然后可以去该文件中将Git <<<<<,=====,>>>>>> 标记出的不同分支的内容,解决完冲突后保存,然后再进行提交一次即可
      4. 合并完成后可以删除dev分支 git branch -d dev
      5. 查看分支 git branch
      6. 如果没有合并分支就要把分支删除,可以使用: git branch -D 分支 注:
      7. 合并分支时,Git一般默认使用 Fast forward 模式,删除分支后,会丢掉分支信息
      8. 使用 git merge --no-ff -m"comment" dev 会在merge分支的时候生成一个新的commit,可以从分支历史上看出分支信息
  3. 常见分支策略
    1. master 分支是非常稳定的,仅用来发布新版本
    2. dev 分支是不稳定的,在dev上干活
    3. 在往下面建立一些自己的分支
  4. Bug分支 场景:当工作进行到一半,没办法提交,突然接到一个要在两个小时解决一个bug的通知
    1. 使用 stash功能将当前工作现场保存起来 git stash
    2. 却换到需要修复Bug的分支,如(master),新建一个临时分支
    3. 然后修改Bug,提交到临时分支上
    4. 确认Bug分支没问题的话,可以却换回master分支,然后合并Bug分支
    5. 最后删除Bug分支
    6. 找回刚刚保存起来的工作场景,命令: git stash list #显示 stash@{0}: WIP on dev: 6224937 add merge 然后恢复之前的工作场景,两种方法:
      1. git stash apply stash@{0} 恢复后stash内容并不删除
      2. git stash pop stash@{0} 恢复的同时将stash删除了
  5. Feature分支
    1. 就是针对要开发的功能新建一个功能分支,开发完成后,完成合并后将该功能分支删除
  6. 本地与远程
    1. 当从远程库克隆的时候,Git自动将本地的master分支和远程的master分支对应起来,远程仓库的默认名称是origin
    2. 查看远程库的信息用 git remote -v
    3. 推送分支 经测试,不管你提交时在哪个分支,如果执行 git push origin master 时 会将本地的master分支推送到远程的master分支,如果执行 git push origin dev 时 ,会将本地发dev分支推送到远程的dev分支,但是如果在dev分支上 执行 git pull origin master 时,会吧master分支上的内容拉下来并且与当前的分支合并
    4. 如果git pull 提示提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用 git branch --set-upstream branch-name origin/branch-name。
    5. 多人协作的工作模式:
      1. 首先尝试 git push origin branch-name 推送自己的修改
      2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull 视图合并
      3. 如果合并有冲突则解决冲突,并在本地提交
      4. 没有冲突或者解决掉冲突后,使用 git push origin branch-name 推送
    6. 远程分支管理
      1. 推送本地分支 dev 到 远程分支 dev 并建立关联关系
        1. 远程已经有dev 并且已经关联本地分支dev 使用 git push
        2. 远程已经有dev 但是未关联本地dev 使用 git push -u origin/dev
        3. 远程没有dev分支 使用 git push origin dev:dev
      2. 删除远程分支 (远程分支删除后本地分支还在) 执行下面两条命令
        1. git branch -r -d origin/branch-name #删除对分支的追踪
        2. git push origin :branch-name #删除远程分支

标签管理

在发布版本的时候,可以在版本库中打一个标签,这样就唯一确定了打标签时刻的版本。在需要的时候可取某个标签的版本。标签相当于是版本库的一个快照,可以自定义标签名字,便于查找

  1. 管理标签
    1. 创建标签 git tag tag_name 上面的命令默认是打在最新提交的commit上的,如果有时候忘记打标签的话,可以找到历史提交的commit id 然后打上标签即可 git tag tag_name commit_id 可以创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字 git tag -a -m "blablabla..." 还可以通过 -s 用私钥 签名一个标签: git tag -s -m "blablabla..." 签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错
    2. 查看标签
      1. 用git show tag_name 查看标签的说明
      2. git tag 查看所有标签
    3. 删除标签 git tag -d tag_name
    4. 远程标签 创建的标签默认只存储在本地,不会自动推送到远程
      1. 推送某个标签到远程 git push origin tag_name
      2. 一次性推送全部尚未推送到远程的本地标签 git push origin --tags
      3. 如果标签已经推送到远程,要将远程标签删除
        1. 先将本地标签删除 #这个其实可以不做 git tag -d tag_name
        2. 从远程删除 git push origin :refs/tags/tag_name

忽略特殊文件

有些文件放在Git工作目录中,但是又不能提交它们,不如数据库密码等配置文件,但是每次git status的时候都会显示好多 Untracked files ... , 这可以通过在Git 工作目录中创建一个 .gitignore 文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件

.gitignore 参考 : 见GitHub的示例 忽略文件的原则:

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

配置别名

我们有时候在面对非常长的命令会头疼,这时候可以给这些命令配置一个别名,这样就可以使用别名来进行相关操作了

命令:git config --global alias.别名 原名   # 注意,当原名是一个单词的时候不需要加引号,如果超过了一个单词,原名就需要用单引号包括

例: git config --global alias.st status 执行过之后,下次再需要执行 git status 时就可以直接输入 git st 即可

示例:

git config --global alias.unstage 'reset HEAD'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

注意:

  1. 配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。
  2. 每个仓库的Git配置文件都放在.git/config文件中,当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
  3. 配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。

本文参考: 廖雪峰的官方网站 如需转载请注明出处:http://www.cnblogs.com/zhuchenglin/p/8820186.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

sourceTree安装与使用

1,下载并安装 sourceTree http://downloads.atlassian.com/software/sourcetree/windows/So...

60710
来自专栏vue学习

vue-cli安装、node-sass安装、mintUI组件库安装

1、使用淘宝npm镜像 在node中很多安装失败的原因就是因为国内网络限制因素,所以使用淘宝镜像有利于解决这方面问题。(使用了翻墙、vpn,用install命...

31230
来自专栏ppjun专栏

Android十八章:5分钟看完Git常用命令

打开C:\Users\Rabbit.ssh 找到id_rsa.pub 复制里面的https://github.com/settings/keys 点击 ne...

7820
来自专栏开源优测

jenkins系统管理(一)-管理用户、管理插件

系统管理主要用于jenkins后台管理配置,包含系统设置、全局安全配置、全局工具配置、管理插件、管理节点、管理用户等功能。 本文将介绍的是系统管理中两个主要功能...

38240
来自专栏Rgc

Django的POST请求报403,及四种解决方法

Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误

1.5K40
来自专栏向治洪

使用Apache的ab进行压力测试

概述 ab是apache自带的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab然后进行apache 负载压力测试。 后台测试开发中,常用的压...

324100
来自专栏腾讯云安全的专栏

Tomcat安全配置小技巧

19220
来自专栏MasiMaro 的技术博文

如何利用git shell提交代码到github

在很早之前我根据找到的一些资料以及自己的实践总结了一篇如何将VS2015上的代码上传到GitHub上,后来我发现有小伙伴私信我,说跟我上面写的不一样,但是那段时...

8920
来自专栏李智的专栏

Windows下git安装使用教程

git status 此命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

17510
来自专栏用户画像

MAC 安装mysql

一、下载安装包 https://dev.mysql.com/downloads/mysql/

18020

扫码关注云+社区

领取腾讯云代金券