git的基本操作

git的基本操作

初始化项目

  • git init
  • git add .(.代表所有文件所有文件) git add 文件路径 将文件添加到暂存区
  • git commit -m ‘你的提交信息’ 将暂存区的东西提交到版本库中的默认master分支

查看仓库的修改状态

  • git status
  • git diff 查看具体的状态

如果有修改要提交 就执行git commit -m ‘消息内容’

版本回退

  • git log 用来查看历史commit的版本记录
  • git log --pretty=online 简略的查看历史版本 只显示出16进制的git id
  • git reset --hard HEAD^ 表示回退一个版本,HEAD^^ 回退两个版本以此类推 ,HEAD~100表示回退100个版本
  • git reset --hard (commit id) 恢复到指定的版本
  • git reflog 可以查看命令历史,以便恢复指定版本。

工作区和暂存区

  • 工作区就是我们的电脑里能看到的目录结构

  • 工作区里面有个隐藏文件.git 这个是版本库 这里面有很多东西其中有一个叫做stage(暂存区)和git默认创建的master分支这个分支指向HEAD

    假如修改文件readme和LICENSE后

    提交后

    撤销修改

    • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file
    • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
    • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

    删除文件
    当你误删除了一个文件可以用git checkout – 文件名 找回
    当你删除一个文件并且确定要删除它 先删除暂存区的文件然后再次提交
    git rm 文件名 => git commit -m ‘你的修改提示信息’
    添加远程仓库

    • 在码云或者GitHub上创建仓库
    • 关联远程仓库 git remote add origin https://gitee.com/IT_Ruan/learngit.git
    • 将本地的推送到远程库上 git push -u origin master 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
      从远程克隆
      要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。
      Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
      创建于合并分支
    • 鼓励使用分支进行开发
    • 查看分支情况 git branch
    • 创建分支 git branch 分支名称
    • 切换分支 git checkout 分支名称
    • 合并指定分支到当前分支 git merge 指定分支
    • 删除指定分支 git branch d 分支名称

解决冲突

如果分支合并产生冲突可以通过 git status查看哪些文件发生冲突 并且通过 git diff 查看冲突的具体情况。手动解决冲突然后再次提交。再次提交后完成合并。

用git log --graph 可以查看分支的合并图。

分支管理策略

  • 启用普通模式合并分支 git merge --no-ff -m ‘合并提价的信息’ dev
  • 查看提交的分支情况:git log --graph

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

Git分支十分强大,在团队开发中应该充分应用。

合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并

bug分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

feature分支

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

多分协作

并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

通过远程抓取分支

远程抓取分支一般只有master分支 如果需要在远程添加分支执行以下命令:git checkout -b dev origin/dev

因此,多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

  • 查看远程库信息,使用git remote -v;
  • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
  • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

创建标签

  • 命令 git tag tagname 用于新建一个标签,默认HEAD,也可以指定一个commit id
  • 命令 git show tagname 用来展示某个标签的具体信息。
  • 命令 git tag -a tagname -m ‘blablaball…’ 可以指定标签信息
  • 命令 git tag 可以查看所有标签。

操作标签

命令 git push origin tagname 可以推送一个本地的标签;

命令 git push origin --tags 可以将本地未推送的标签全部推送到远程;

命令 git tag -d tagname 可以删除本地的一个标签

命令 git push origin :refs/tags/tagename 可以删除远程的一个标签;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值