• git学习笔记


    Git 学习笔记

    之前一直使用的是sourcetree和github工具来进行项目代码管理,没有尝试过使用Git来手动管理代码,就想学一学。在网上找了廖雪峰老师的教程跟着走了一遍,跟Atom和IDEA结合使用了一下,感觉能够正常完成自己的的代码管理需求就行了,其它更复杂的操作等以后遇到了在学习吧。

    Git是什么

    Git是目前世界上最先进的分布式版本控制系统(没有之一),由linux独立完成。而Github适用于托管代码的品台。

    版本控制系统是什么

    版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。简而言之,就是用于记录你做的东西一直以来的变化过程。
    其分为集中式和分布式,集中式就是SVN这种,利用中央服务器来管理修订记录,所有操作都依赖于这个中央服务器,特点有需要网络连接、版本库拥有唯一地址、提交需要授权、冲突解决按照提交先后决定谁解决、中央服务器出问题,大家都没办法正常运作;分布式则是版本库是独立的,它只关心整体是否发生改变,并根据改变建立相应的索引记录等,同时GIT也有分支管理,能够更有效管理代码,在失去网络的时候也能将变更交给本地处理,等网络恢复再上传远程仓库进行写作。
    所以我认为集中式和分布式的最重要的区别在于:是否去中心化、能否断网工作

    如何使用Git

    Linux:按常规方式安装Git即可
    Windows:下载安装msysgit(Windows版的Git)即可使用

    基础操作

    1. 创建版本库:git init 初始化为版本库
      添加文件:git add test.html(工作区提交到暂存区)
      提交文件:git commit -m 'commit info'(暂存区提交到分支)

    2. 查看版本信息:
      git status 文件状态,查看文件是否被修改
      git diff 文件修改在哪里

    3. 版本回退:
      git log 查看提交日志
      git reset --hard HEAD~ 回退到上个版本(上上版本HEAD^^ 回退一百个版本 HEAD~100)
      git reset --hard 3628164 回退到指定版本
      git reflog 查看历史命令

    4. 修改回退:
      git checkout -- test.html 丢弃工作区修改
      git reset HEAD test.html 撤销修改,将暂存区内容放回到工作区,也就是将git add 操作回滚,所以无改变

    5. 删除和撤销删除
      git rm ; git commit ; 就可以完成删除操作
      git checkout -- del.txt 撤销未被提交的删除操作

    跟Github连接使用

    连接远程版本库(github),添加远程库
    1、建立ssh秘钥,生成一个id_rsa和id_rsa.pub
    2、github记录生成的那个秘钥
    3、关联远程库:git remote add origin git@github.com:michaelliao/learngit.git
    4、第一次推送所有内容:git push -u origin master
    5、推送修改:git push origin master
    (PS:运用shh -T -v git@github.com查看具体出错信息,再根据信息来调试)

    从远程库克隆
    git clone git@github.com:michaelliao/gitskills.git

    分支管理

    1、创建并切换到dev分支
    git checkout -b dev(-b参数表示创建并切换)
    2、修改提交内容
    3、查看所有branch
    git branch
    4、切换分支
    git checkout master
    5、合并分支
    git merge dev
    6、删除Dev分支
    git branch -d dev

    解决冲突,merge的时候会报错,直接打开相应的文件解决冲突后重新提交即可
    用git log --graph命令可以看到分支合并图

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

    暂存功能

    1、暂存
    git stash
    2、暂存列表
    git stash list
    3、恢复暂存
    使用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
    或者直接使用 git stash pop,恢复的同时把stash内容也删了

    强制删除分支
    开发一个新feature,最好新建一个分支;
    如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

    分支-多人协作

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

    标签管理

    创建标签
    git log v.10
    为历史提交打上标签
    git log --pretty=oneline --abbrev-commit(查看历史提交)
    git tag v0.9 6224937

    git tag -a -m "blablabla..."可以指定标签信息;
    git tag -s -m "blablabla..."可以用PGP签名标签;
    操作标签
    git tag -d v0.1
    推送标签
    git push origin --tags(一次性推送)git push origin (单个推送)
    删除标签(先从本地删除,再推送远程)
    git tag -d v0.9
    git push origin :refs/tags/v0.9

    自定义设置Git

    设置git命令的颜色
    git config --global color.ui true

    忽略特殊文件

    .gitignore文件
    *.class # 忽略的文件

    配置别名

    git config --global alias.st status
    命令删除一个已定义的别名
    git config --global --unset alias.ci

    搭建git服务器

    1、搭建Git服务器非常简单,通常10分钟即可完成;
    2、要方便管理公钥,用Gitosis;
    3、要像SVN那样变态地控制权限,用Gitolite。

    感谢廖雪峰老师的教程,
    教程地址为:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  • 既然不能成为屠龙的勇士,那么就好好成为一名优秀的管家,为公主建设一个温馨美好的家。
    Since it can not become a dragon warrior, then it is a good housekeeper, for the princess to build a warm and beautiful home.

  • 相关阅读:
    CSRF攻击与防御
    別惹我
    单系统登录机制SSO
    jdk8- list操作
    mybatis--Mapper 常见报错总结(持续总结)
    死锁排查的小窍门 --使用jdk自带管理工具jstack
    oracle笔记--查询10条之后记录的数据
    zookeeper集群操作【这里只说明简单的操作步骤,zk的相关参数、说明请参考官方文档】
    利用jquery操作隐藏table某一列
    关于python3.X 报"import urllib.request ImportError: No module named request"错误,解决办法
  • 原文地址:https://www.cnblogs.com/ITflying/p/8000311.html
  • Copyright © 2020-2023  润新知