美文网首页
git使用说明

git使用说明

作者: 瞎掰呗 | 来源:发表于2018-05-16 17:43 被阅读0次

    git使用说明

    @(随手摘)[版本控制, 开发工具]

    [TOC]

    创建版本库

    初始化

    初始化一个git 仓库

    • git init

    添加文件到版本库

    把一个文件放到仓库只需两部

    • git add:把文件添加到仓库
    • git commit:提交文件到版本库
    git add file1
    git commit -m "add file1"
    

    版本管理

    • git status 查看工作区状态
    • git diff 查看修改的内容

    版本回退

    • git log 查看提交记录,简化显示信息加上参数--pretty=oneline
    • git reset --hard commit_id版本选择,HEAD指向当前版本
    • git reflog查看所有提交历史

    工作区指的是仓库所在目录
    版本库指的是工作区内.git目录,版本库中许多东西,stage(index)暂存区,git自动创建的分支master,以及指向master的一个指针HEAD.添加文件到版本库分了两步

    • git add把文件添加进去,实际是把文件修改添加到了暂存区
    • git commit提交修改,实际上是把暂存区的所有内容提交到当前分支

    git diff #是工作区(work dict)和暂存区(stage)的比较
    git diff --cached #是暂存区(stage)和分支(master)的比较

    image

    管理修改

    要提交修改先git add到暂存区,再git commit从暂存区提交到版本库

    撤销修改

    • 场景1:当改动工作区的内容,想丢弃工作区的修改时
      git checkout -- file
    • 场景2:当改动了工作区的内容且添加到了暂存区(git add),分两步
      git reset HEAD file回到场景1,再 git checkout -- file
    • 场景3:已经提交了修改到版本库,但没推送到远程库
      git reset --head commit_id版本回退

    删除文件

    • git rm删除文件,提交到暂存区
    • git commit提交删除到版本库

    远程仓库

    • 查看用户主目录找到.ssh目录,里面有id_rsa(私钥)和id_rsa.pub(公钥),没有创建SSH KEY
      ssh-keygen -t -C "email@example.com"
    • 登录GitHub,打开"Account settings","SSH Keys",点击"Add SSH Key",粘贴id_rsa.pub内容

    添加远程库

    要关联一个远程库,使用命令git remote add origin 远程库地址
    关联后,使用命令git push``git push -u origin master第一次推送master分支的所有内容
    此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

    从远程库克隆

    git clone

    分支管理

    创建与合并分支

    创建分支
    git branch <name>
    切换分支
    git checkout <name>
    创建并切换分支
    git checkout -b <name>
    删除分支
    git branch -d <name>
    列出所有分支
    git branch
    合并分支
    git merge <name>

    Fast-forward
    git merge --no-ff -m "merge with no-ff" <name>
    禁用Fast forward
    把dev分支的工作成果合并到master分支上:
    git merge dev
    #删除分支dev
    git branch -d dev
    

    分支策略

    分支策略
    修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
    开发一个新feature,最好新建一个分支;
    如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

    多人协作

    多人协作的工作模式通常是这样:
    首先,可以试图用git push origin branch-name推送自己的修改;
    如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    如果合并有冲突,则解决冲突,并在本地提交;
    没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
    如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
    这就是多人协作的工作模式,一旦熟悉了,就非常简单。

    查看远程库信息,使用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,如果有冲突,要先处理冲突。

    标签管理

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
    Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

    创建标签

    git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    git tag -a <tagname> -m "blablabla..."可以指定标签信息;
    git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
    git tag可以查看所有标签。

    操作标签

    git push origin <tagname>可以推送一个本地标签;
    git push origin --tags可以推送全部未推送过的本地标签;
    git tag -d <tagname>可以删除一个本地标签;
    git push origin :refs/tags/<tagname>可以删除一个远程标签。

    忽略特殊文件

    忽略某些文件时,需要编写.gitignore
    .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

    相关文章

      网友评论

          本文标题:git使用说明

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