github

2018-10-11  本文已影响0人  tcatlsy

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  #删除远程仓库中的指定标签

上一篇下一篇

猜你喜欢

热点阅读