• git


    创建版本库

    版本库又名仓库,可以简单的理解为一个目录,目录里所有的文件都可以被管理起来,每个文件的修改删除,git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还原

    第一步,选择一个合适的地方,创建一个空目录

    $ mkdir learngit
    $ cd learngit
    $ pwd
    /Users/michael/learngit

    pwd用于显示当前目录

    第二步,通过git init把目录变成git可以管理的仓库

    $ git init
    Initialized empty Git repository in /Users/michael/learngit/.git/

    把文件添加到版本库

    第一步,用git add告诉Git,把文件添加到仓库

    git add readme.txt

    第二步,用git commit告诉Git,把文件提交到仓库。-m输入的是本次提交的说明,可以方便的从历史记录找到改动记录。commit可以一次提交很多文件

    git commit -m "wrote a readme file"

    时光穿梭机

    修改readme.txt文件。

    运行git status查看结果。git status命令可以让我们时刻掌握工作区的状态。

    git status告诉你文件有没有被修改过,git diff查看修改内容

    版本回退

    HEAD指向的版本就是当前版本,HEAD^指向的是当前版本的上一个版本,HEAD^^当前版本的上上个版本……上100个版本写成HEAD~100

    版本穿梭使用命令 git reset --hard commit_id, commit_id是版本号

    穿梭前,使用git log查看提交历史,以便确定退回哪个版本

    要重返未来,用 git reflog 查看命令历史,以便确定回到未来哪个版本

    工作区和暂存区

    工作区电脑里能看到的目录,比如learning文件夹就是一个工作区

    版本库(Repository)

    Git版本库存了很多东西,最重要的就是stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD

    第一步,git add把修改及新增的文件添加到暂存区

    第二步,git commit提交更改,把暂存区的内容提交到当前分支

    在没有自己创建分支的情况下,git commit就是往master分支提交更改

    管理修改

    git diff HEAD -- readme.txt 查看工作区和版本库最新版本的区别

    撤销修改

    场景一,修改了工作区的内容,丢弃工作区的修改,使用 git checkout -- file

    场景二,修改了工作区的内容,还添加到了暂存区。分两步 git reset HEAD <file>,然后按照场景一继续操作

    场景三,已经提交不合适的修改到版本库时,使用 版本回退 ,前提是没有推送到远程仓库

    删除文件

    方式一,rm file然后 git rm <file> 或者git add <file>,再git commit

    方式二,git rm <file> ,再git commit

    如果是工作区误删,可以运行 git checkout -- <file>,git checkout是用版本库里的版本替换工作区的版本,无论是修改还是删除,都可以还原 

    远程仓库

    添加远程仓库

    关联远程仓库,使用 git remote add origin git@server-name:path/repo-name.git

    关联后,使用 git push -u origin master 第一次推送master分支的所有内容,-u不但会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来

    此后,每次提交直接 git push origin master 推送最新修改

    从远程仓库克隆

    要克隆一个仓库,首先需要知道仓库的地址,然后使用git clone命令克隆

    Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

    查看,删除,重命名远程分支

    查看远程分支 git branch -a 

    本地分支push到远程 git push origin <branch-name>:<branch-name>

    删除远程分支 git push origin --delete <branch-name> 或者 git push origin :<branch-name> (推送一个空分支到远程分支,其实就是相当于删除远程分支)

    删除远程tag git push origin --delete tage <tag-name> 或者 git tag -d <tag-name> & git push origin :refs/tags/<tag-name>

    分支管理

    创建与合并分支

    第一步,在本地创建dev分支,然后切换到dev分支 git checkout -b dev

    git checkout 加上-b参数表示创建并切换,相当于以下两条命令

      git branch dev

      git checkout dev

    第二步,git branch 会列出所有分支,当前分支前会标一个*号

    第三步,切换回master分支,git checkout master

    第四步,合并某分支到当前分支 git merge <name>

    第五步,删除分支 git branch -d <name>

    解决冲突

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

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

    git log查看分支历史,git log --graph命令可以看到分支合并图, 后面加上 --pretty=oneline 单行显示历史提交--abbrev-commit

    分支管理策略

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

    Bug分支

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

    步骤一,当手头工作没有完成时,先把工作现场 git stash

    步骤二,然后切回master分支,从master拉出一个issue分支,修复bug

    步骤三,切回工作分支git stash list查看stash内容

    步骤四,git stash pop恢复(或者git stash apply恢复,然后git stash drop删除,因为git stash apply不删除stash内容,如果有很多次stash可以使用git stash apply@{0})

    Feature分支

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

    如果要丢弃一个没有被合并过的分支,可以通过 git branch -D <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 branch --set-upstream-to=<remote-branch-name> <local-branch-name>

    从远程抓取分支,使用 git pull,如果有冲突先处理冲突

  • 相关阅读:
    ________________”一切都变了”被遗忘的 label
    ________________java常用快捷键
    Java核心技术 卷1 多线程----执行器(5)
    Java核心技术 卷1 多线程----线程安全的集合(4)
    Java核心技术 卷1 多线程----阻塞队列在线程中的使用(3)
    数据结构与算法之算法的度量方法(1)
    数据结构与算法之算法初体验(1)
    Java核心技术 卷1 多线程----线程的相关用法(2)
    Java核心技术 卷1 多线程----线程的相关概念(1)
    heap&stack 区别
  • 原文地址:https://www.cnblogs.com/xiaochengzi/p/10033893.html
Copyright © 2020-2023  润新知