github

作者: tcatlsy | 来源:发表于2018-10-11 00:40 被阅读0次

    linux

    git:查看是否已经安装

    sudo apt-get install git  :安装

    git init:将一个普通目录变成版本库

    设置github用户名和邮箱

    git config --global user.email "you@example.com"

    git config --global user.name "Your Name"

    git add filename :将文件添加到缓存区

    git commit -m "注释" :提交文件到版本库【仓库】

    git status:查看仓库当前的状态

    git diff  filename:查看仓库具体的改动

    版本回退

    工作原理:每当修改一个文件,并且使用commit提交之后,其实就相当于保存了一个快照

    需求:回退到上一个版本

    补充:要回退版本,首先需要知道当前处于哪个版本,在git中,用HEAD表示当前版本,上一个版本是HEAD^,上上个版本是HEAD^^,如果向上找100个版本,则表示为HEAD~100

    git  reset  --hard  版本号【commit id】

    总结:

    HEAD指向的是当前版本,所以,git在历史的版本之间来回切换,使用git reset --hard commit id

    切换版本前,可以使用git log查看提交历史记录,以便于确定回到哪个历史版本

    要重返未来,用git reflog查看历史执行过的git操作,从上往下寻找第一个commit的操作,则是未来的最新的版本

    工作区和暂存区

    工作区:working Driectory,就是你电脑中的能看到的目录【python1805】

    版本库:工作区中有一个隐藏的目录.git,该目录就是git中的版本库

    ​ 版本库中存放了很多的数据,其中包括暂存区【缓存区,stage或者index】,还有git为我们自动创建的第一个分支master【主分支】,以及指向master的一个指针HEAD

    往git版本库中添加文件,分为两步:

    ​ a.git add,实际是将文件添加到暂存区中

    ​ b.git commit  .实际是将暂存区的文件提交到当前分支【主分支】

    撤销修改

    a.修改了文件内容,但是还没有添加到暂存区(没有add,没有commit)

    b.不但修改了内容,还添加到了暂存区,但是还没有提交(add了,没有commit)

    c.直接将修改的内容提交到了版本库(add并且commit了)

      实质:版本回退

    删除文件

    在git中,删除文件也是一个修改操作

    远程仓库

    建立远程仓库的准备工作

    步骤:

    a.创建github账号

    b.生成ssh key【秘钥,建立本地和网络之间的连接】

    ​ 命令:ssh-keygen  -t  rsa  -C    "github的注册邮箱"

    c.添加到github

    settings--ssh and GPG keys--new ssh key

    d.检测是否添加成功

    ​ 命令:ssh  -T  git@github.com

    将本地仓库和远程仓库联系起来

    先建立远程库new repository

    总结:

    要关联一个远程仓库,使用命令 git remote add origin git@github.com:username/repoName.git

    关联成功之后 ,使用命令git push -u  origin master第一次推送master分支的内容到远程仓库

    以后,每次本地提交之后,只需要使用命令git  push  origin master推送最新的修改【本地修改----》add到暂存区---》commit到本地仓库----》push到远程仓库】

    从远程仓库克隆

    git clone git@github.com:username/repoName.git 

    分支管理

    6.1.创建和合并分支

    总结:

    git鼓励大量使用分支

    查看分支:git branch

    创建分支:git checkout -b  name  【-b创建分支并且同时切换到子分支下】

    切换分支:git checkout name

    合并某个子分支到当前分支:git  merge name

    删除分支:git branch -d name

    解决冲突

    总结:

    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

    解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

    用git log --graph命令可以看到分支合并图

    分支合并策略

    ​ 合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息

    ​ 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

    总结:

    master分支应该是非常稳定的,仅仅使用master分支发布版本,平时不在上面干活

    比如:每个人都在dev的分支上干活,每个人都有自己的分支,时不时的向dev上合并代码就可以了

    比如:发布1.0版本,再把dev上的代码合并到master上面

    合并分支时,加上--no-ff参数表示使用普通模式进行合并,合并之后可以查看历史 记录,而Fast-Forword快速模式没有历史记录

    bug分支

    一般情况下,每个bug都需要使用一个分支来进行解决,解决后,分支删除

    git stash:可以把当前工作现场储存起来,然后先进行其他额的工作,完成工作之后,可以解封继续工作

    总结:

    ​ 修复bug时,创建一个新的分支,进行bug的修复,然后合并,最后删除

    ​ 当手头的工作没有完成的时候,使用git stash 将内容封存,然后取修复bug,当bug修复完成之后,则使用命令git stash pop解封

    feature分支

    总结:

    ​ 每开发一个新的功能【版本迭代】,最好新建一个分支来进行操作

    ​ 如果需要丢弃一个还没有被合并的分支,使用命令 git branch -D  branch-name

    多人协作

    当你从远程仓克隆时,实际上git将本地的master和远程的master对应起来了,并且远程仓库的默认的名字为origin

    推送分支

    推送分支:把该分支上的所有的本地提交推送到远程库,推送时,要指定本地分支

    总结:

    ​ 并不是所有的分支都需要推送到远程仓库

    ​ a.master分支时主分支,因此要时刻与远程保持同步

    ​ b.dev是一个开发分支,团队所有的成员都在上面工作,所以也需要推送到远程仓库

    ​ c.bug分支只是修复一个bug,就没必要推送到远程

    抓取分支(需要公钥)

    总结:

    ​ a.查看远程库的信息,使用git remote -v

    ​ b.本地新建的分支如果不推送到远程,对其他人都是不可见的

    ​ c.从本地推送分支,使用命令git push origin branchname,如果推送失败,则先用git pull抓取

    ​ d.在本地创建于远程分支的连接,使用命令git checkout -b branchname origin/branchname

    ​ e.从远程抓取分支,使用git pull,如果有冲突,则要先解决冲突

    标签管理

    创建标签

    操作标签

    git tag v1.0 #创建标签,默认创建的是当前最新提交的标签

    git tag v0.2 ae20ec5 #为指定commit id创建标签

    git show v1.0 #查看指定标签的详细信息

    git tag -a v0.1 -m "version 0.1" e7423195  #创建标签,携带标签的描述信息

    git tag #查看当前分支下的标签

    git push origin --tags #将本地仓库中的标签推送到远程仓库

    git tag -d v0.2   #删除本地仓库中的标签

    git push origin :refs/tags/v0.2To  #删除远程仓库中的指定标签

    相关文章

      网友评论

          本文标题:github

          本文链接:https://www.haomeiwen.com/subject/ayfvaftx.html