git学习小结 (笔记)

时间:2022-09-25 19:35:54

  Modesty helps one to go forward, whereas conceit makes one lag behind.

  "虚心使人进步,骄傲使人落后"

:本文参考 廖雪峰的Git教程 ,非常感谢廖大神的无私奉献,本文仅作为笔者的学习笔记,如果需要完整的学习git,请猛戳前面的链接^_^

一、git是什么?
   1、git是什么?
        "git是世界上最先进的分布式版本控制系统(没有之一)"  --廖雪峰
   2、为什么要学习git?
        git是一种高效且方便的版本控制工具,在实际开发中可以大大提高工作效率哦 ^_^ ~~

二、安装git

 sudo apt-get install git

三、创建版本库

 [mkdir <库名>]
[cd <库名>]
git init #将当前目录初始化为一个git仓库

四、版本控制
   1、将文件添加到版本库

 git add <filename>          #把文件添加到暂存区,注意该文件必须放在仓库目录(或子目录)下
git commit -m "提交说明" #把暂存区的内容提交到当前分支

2、查看工作区的状态

 git status                   #查看工作区的修改记录
git diff <filename> #如果git status提示有修改记录,那么这条命令可以查看修改内容

3、版本切换

 #HEAD指向当前版本
git reset --hard commit_id #回退到commit_id指定的版本
git log [--pretty=oneline] #查看从最近到最远的提交日志,加上"[]"内的参数可以以"版本号 提交日志"的格式查看
git reflog #查看命令历史

4、撤消修改

 git checkout -- <file>       #撤消工作区的修改
git reset HEAD <file> #撤消暂存区的修改,返回工作区修改的状态

5、删除文件

 git checkout -- <file>       #用版本库里的版本替换工作区的版本
git rm <file> #删除暂存区里的文件

五、远程仓库
   1、创建SSH Key:

 #进入用户主目录下的.ssh目录(没有则自己创建):
ssh-keygen -t rsa -C "email@example.com" #创建SSH Key,注意填写正确的邮箱地址
#登陆GitHub,打开"Account settings","SSH Keys"页面,然后"Add SSH Key",填写"Title",将id_rsa.pub的内容拷贝到Key文本框,"Add Key"

2、添加远程库

 #登陆GitHub,"Create a new repo"创建一个新仓库
git remote add origin git@server-name:path/repo-name.git #将本地仓库关联到远程库
git push [-u] origin master #推送最新修改,第一次推送时要加上-u参数

3、从远程库克隆

 git clone git@server-name.com:path/name.git     #克隆一个远程库到当前目录

六、分支管理
   1、创建与合并分支
         分支的作用是什么:当开发项目中的某一个任务的时候,可以使用新的分支完成,之后合并到master分支再删除新分支,这样做可以比较安全的管理项目,因为在某分支上的操作只会修改该分支包含的内容,比较安全

 git branch <name>       #创建分支
git checkout <name> #切换分支
git checkout -b <name> #创建并切换
git merge <name> #合并分支到当前分支
git branch -d <name> #删除分支
git log --graph #查看分支合并图

2、分支管理策略
        Fast forward模式:该模式是分支合并时的默认模式,在这种模式下,删除分支后,会丢失分支信息,在实际开发中不推荐使用该模式。

 git merge --no-ff -m "XXX" b-name       # "--no-ff" 参数表示禁用Fast forward模式

分支管理的基本原则:
                ①master分支仅仅用来发布新的版本;
                ②团队成员都在dev分支上工作,每个人都在dev分支的一个子分支上工作;

3、bug分支

 git stash       #保存当前的"工作现场"
git stash apply #恢复现场但不删除stash的内容
git stash drop #删除stash的内容
git stash pop #恢复现场并删除stash的内容
git stash list #查看stash的内容

bug修复策略:创建一个新分支修复bug,然后合并,删除
        步骤:保存当前"工作现场"-->创建并切换到bug分支-->修复bug-->切换到bug分支的上层分支-->合并并删除bug分支-->切换回原来的工作分支-->恢复"工作现场"。
   4、feature分支
        新增功能的策略:创建新分支,然后合并删除

 git branch -D <name>    #强行删除一个没有被合并的分支

5、多人协作

 git remote -v   #查看远程库信息
git pull #抓取最新的提交到本地仓库
git push origin branch-name #将本地分支推送到远程仓库
git checkout -b branch-name origin/branch-name #在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name #建立本地分支和远程分支的关联

多人协作的工作模式:
                ①试图用  git push origin branch-name  推送自己的修改;
                ②如果推送失败,则因为远程分支比本地分支更新,需要先用 git pull 抓取到本地然后试图合并
                ③如果合并有冲突,则先解决冲突,并在本地提交;
                ④没有冲突或者解决掉冲突后,用  git push origin branch-name  推送

七、标签管理
   1、创建标签

 git tag                 #查看所有标签
git show <tagname> #查看标签的详细信息
git tag <tagname> [commit id] #新建一个标签,默认为HEAD,也可以指定一个commit id
git tag -a <tagname> -m "xxx" #指定标签信息为 "xxx"
git tag -s <tagname> -m "xxx" #用PGP签名标签

2、操作标签

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

八、使用GitHub
   在GitHub上,可以任意Fork开源仓库,并且自己拥有Fork后的仓库的读写权限,可以推送 pull request 给官方仓库来贡献代码

九、自定义Git
   1、忽略特殊文件
        ①忽略某些文件时,需要编写 .gitignore ,并在文件中加上要忽略的文件名;
        ② .gitignore 文件本身要放到版本库里,并且可以对 .gitignore 做版本管理;
   2、配置别名
        ① git config [--global] alias.new-name old-name #将 new-name 作为 old-name 的别名,加上--global表示对当前用户修改,不加则仅仅对当前仓库修改; 
        ②除了使用  config 参数外,还可以通过修改配置文件来配置别名:每个仓库的配置文件放在 .git/config 中,当前用户的配置文件则放在Home目录下的 .gitconfig 中;
   3、搭建Git服务器
        ①安装git:  sudo apt-get install git 
        ②创建git用户: sudo adduser git 
        ③创建证书登录:收集所有需要登陆的用户公钥,即 id_rsa.pub ,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件中,一行一个;
        ④初始化Git仓库:先选定一个目录作为Git仓库,假设是 /srv/sample.git ,在 /srv 目录下输入: sudo git init --bare sample.git ,并修改仓库的所有者为git: sudo chown -R git:git sample.git 
        ⑤禁用shell登录:将文件 /etc/passwd 中类似这样的一行: git:x:::...:/home/git:/bin/bash 修改为 git:x:::.../home/git:/usr/bin/git-shell
        ⑥克隆远程仓库: git clone git@server:/srv/sample.git

总结:git包含了很多的参数和用法,但是经常用到的不多,以后多加练习应该就可以熟练使用了

git学习小结 (笔记)的更多相关文章

  1. Git学习小结 ~ Lethe's Blog

    学习自https://www.liaoxuefeng.com/wiki/896043488029600 一.创建版本库 (1) git init 初始化一个Git仓库 (2)添加文件到Git仓库,分两 ...

  2. Git学习小结&lpar;第三次作业&rpar;

    本文主要总结一下在学习和使用git中一些用到的命令. 参考教程:廖雪峰git教程 在windows上安装git 下载使用环境:http://msysgit.github.io/, 安装一路默认即可. ...

  3. Git学习小结

    版本控制工具 集中式: CVS SVN 集大成者 分布式:git 创始人:inux Towards 2005年 工具 最好使用linux(oh-my-zsh) gitbash -> cygwin ...

  4. Git 学习相关笔记

    Git Bash 相关命令学 基础概念 参考: https://www.cnblogs.com/gaoht/p/9087070.html https://www.runoob.com/git/git- ...

  5. GIT学习记录4(标签管理与自定义git)

    学习参考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 本编随笔只是自己对 ...

  6. GIT学习记录3(分支管理)

    学习参考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 本编随笔只是自己对 ...

  7. git学习记录2(远程库管理)

    学习参考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 本编随笔只是自己对 ...

  8. git学习记录1(本地库管理)

    学习参考地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 本编随笔只是自己对 ...

  9. Git学习笔记(二) &middot&semi; 非典型性程序猿

    远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...

随机推荐

  1. &lbrack;课程设计&rsqb;Sprint Three 回顾与总结&amp&semi;发表评论&amp&semi;团队贡献分

    Sprint Three 回顾与总结&发表评论&团队贡献分 ● 一.回顾与总结 (1)回顾 燃尽图: Sprint计划-流程图: milestones完成情况如下: (2)总结 本次冲 ...

  2. Hyper-V初涉&lowbar;虚拟磁盘链错误的解决方案

    当Hyper-V管理器对虚拟机创建了快照,在Hyper-V虚拟机设置中会看到如下图提示.简单的说,就是创建了快照的虚拟机将不能继续进行编辑. 如果,在对虚拟机的主虚拟磁盘进行了编辑,哪怕仅仅是在Win ...

  3. FileUpload文件上传控件

    1.FileUpload控件的主要功能是向指定目录上传文件.FileUpload控件不会自动上传控件,而需要设置相关的事件处理程序,然后在程序中实现文件上传. 2.FileUpload控件常见的属性 ...

  4. ecshop支付时减库存方法

    ecshop后台减少库存的时机默认只有下订单时和发货时,不能满足各种客户需求啊,要增加一个商家付款后就能减少库存,先解决方法如下 1. includes/inc_constant.php 文件 大约2 ...

  5. POJ - 2965 - The Pilots Brothers&amp&semi;&num;39&semi; refrigerator (高效贪心!!)

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19356 ...

  6. Ajax &lpar;AppServ服务器练习&rpar;

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. 预防黑客入侵 防黑必学的cmd命令vs网络安全

    这些命令又可*********三类:网络检测(如ping).网络连接(如telnet)和网络配置(如netsh).前面两种相对简单,本文只介绍两个网络配置工具.自带的关于网络的命令行工具很多,比如大家 ...

  8. &lbrack;转&rsqb;Oracle 重建索引的必要性

    http://blog.csdn.net/leshami/article/details/23763963 索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DB ...

  9. 结队第一次 plus

    作业描述 作业所属课程:软件工程1916|W(福州大学) 作业要求:结对第一次-原型设计 结对学号:221600328 221600106 作业目标:尝试结对合作,使用NABCD模型,会分析用户需求, ...

  10. java的Timer和TimerTask

    java中Timer类使用的方法是如下的: Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() ...