• Git使用手册


    安装

    linux ubuntu :sudo apt install git

    windows: 从官网下载安装程序,然后一直下一步

    MacOs: homebrew安装或者使用Xcode自带的git

    因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

    mark@ubuntu:~$ git config --global user.name "mark"
    mark@ubuntu:~$ git config --global user.email "markzhou2015@163.com"
    

    创建版本库

    第一步:创建文件夹

    mark@ubuntu:~$ mkdir local_repository
    mark@ubuntu:~$ cd local_repository/
    mark@ubuntu:~/local_repository$ pwd
    /home/mark/local_repository
    

    第二步:通过git init 命令将目录变成Git可以管理的仓库

    mark@ubuntu:~/local_repository$ git init
    已初始化空的 Git 仓库于 /home/mark/local_repository/.git/
    

    文件夹中生成的.git目录中包含git管理仓库所需的文件

    git init 命令也可以在包含文件的目录中使用,并不一定要新建目录


    将文件添加到版本库

    1. git add <file>
    2. git commit -m "xxx"

    git add 可以添加单个文件,也可以添加目录,可以多次执行add操作,最后统一commit

    git commit 命令的参数 -m "提交说明",建议提交时写上说明


    版本库管理

    常用命令

    • git status 可以查看当前仓库状态,如果仓库中的文件有修改但未add到缓存区,或者add之后未commit都是可以看到的
    • git diff <file> 查看文件的修改情况
    • git log --pretty=oneline 可以查看提交日志
    • git reflog 可查历史提交日志
    mark@ubuntu:~/local_repository$ git log --pretty=oneline
    e71476c39304da3242ea165e2d469f2a2e06e8e1 (HEAD -> master) commit 4
    e8a41824ccdb783b2d7f37cdf4abcb751cac3cfd commit 3
    ea93adb3526362058c474ac38cf865dcef792754 commit 2
    9e85fcfe58ace4653c439b63246df41930819849 20181223
    

    e71476c39304da3242ea165e2d469f2a2e06e8e1 这样的内容是sha1计算出来的commit_id

    git diff HEAD -- <file>命令可以查看工作区和版本库里面最新版本的区别


    版本回退

    在Git中,用HEAD表示当前版本,也就是最新的提交1094adb..,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

    git reset --hard commit_id 可以切换版本

    git reset --hard HEAD^ 不使用commit_id也可以用HEAD^方式回退版本,但是回退之后想回到最后提交的版本,需要使用 git reflog 找到commit_id


    管理修改

    1. git checkout -- <file>放弃工作区的修改,实际上是将版本库中的版本copy到工作区中
    2. git reset HEAD <file> 放弃暂存区的修改,即放弃add
    3. git reset --hard HEAD^ 回退版本,即放弃commit

    删除文件

    如果使用rm直接删除git版本库中的文件,并不能删掉,需要git rm <file> 之后再git commit -m ""才能真的从版本库中删掉文件

    如果删错了,想恢复,可以git checkout -- <file>


    远程仓库


    ssh-keygen -t rsa -C "youremail@example.com"
    
    mark@ubuntu:~/Repository$ git remote add origin git@github.com:ocarinaAC/simpleGit.git
    关联远程仓库  
    
    git push -u origin master
    本地推送到远程master分支
    
    mark@ubuntu:~/Repository$ git clone git@github.com:ocarinaAC/simpleGit.git
    克隆远程仓库
    
    mark@ubuntu:~/Repository/simpleGit$ git pull
    从远程仓库pull到本地
    

    分支管理

    git branch  列出当前所有分支
    git branch <branch name> 创建一个分支
    git checkout <branch name> 切换分支
    git checkout -b <branch name> 创建并切换到新分支
    git merge <branch name> 将指定分支合并到当前分支
    git branch -d <branch name> 删除分支
    

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

    解决冲突

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

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

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


    暂存工作区

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

    工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

    一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

    另一种方式是用git stash pop,恢复的同时把stash内容也删了:

    你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

    $ git stash apply stash@{0}
    

    标签管理

    • 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    • 命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;
    • 命令git tag可以查看所有标签。
    • 命令git show <tagname> 可以查看标签的具体信息。
    • 命令git push origin <tagname>可以推送一个本地标签;
    • 命令git push origin --tags可以推送全部未推送过的本地标签;
    • 命令git tag -d <tagname>可以删除一个本地标签;
    • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

    团队协作

    • 查看远程库信息,使用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,如果有冲突,要先处理冲突。
  • 相关阅读:
    SpringCloud+MyBatis+Redis整合—— 超详细实例(一)
    SpringCloud开发学习总结(五)—— 服务容错保护Hystrix
    SpringCloud开发学习总结(三)—— 服务治理Eureka
    SpringCloud开发学习总结(二)—— 简单的微服务构建
    SpringCloud开发学习总结(一)—— 基础知识
    Activiti入门
    kafka入门(3)- SpringBoot集成Kafka
    kafka入门(2)- 环境部署
    kafka入门(1)- 基本概念
    微服务深入浅出(11)-- SpringBoot整合Docker
  • 原文地址:https://www.cnblogs.com/endurance9/p/10165935.html
Copyright © 2020-2023  润新知