git 基本操作

前沿:
1. 本文是学习 廖雪峰git教程 时的一些笔记,大家想看详细版请阅读廖雪峰git教程
2.本文中使用到的系统版本为windows10

一. 安装git

  1. 下载安装程序 -->国内镜像

  2. 安装

  3. 安装完成,在开始菜单中打开Git --> Git Bash

  4. 在打开的窗口中输入配置信息

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

二. 创建版本库

相关知识点:
此处用到一些命令行语句mkdir git-->创建一个名字为git的文件夹;cd git-->进入git文件夹 pwd-->查看当前所在位置

  1. 创建gitlearn文件夹作为版本库保存地址(请确保地址没有中文)
$ mkdir gitlearn
$ cd gitlearn
$ pwd
/Users/michael/gitlearn
  1. 初始化版本库
$ git init
Initialized empty Git repository in /Users/michael/gitlearn/.git/

三. 版本库文件的增删改查与版本选择

相关知识点:
1. 工作区:当前的gitlearn文件夹即为一个工作区
2. 版本库:gitlearn文件夹中隐藏的.git 目录为版本库(其不算工作区的内容)
3. 暂存区:.git目录里面的stage文件(或者时index文件)
4. 暂存区存放的时add命令添加的文件,通过commit命令提交更改后,暂存区的内容就被提交到当前分支

  1. 新增文件

    1. 将文件放入gitlearn文件夹下(一定要是这个文件夹下,不然git会找不到文件)
      两种方法
      • 将编辑好的文件直接放入gitlearn文件夹下
      • 使用vim readme.txt 创建一个readme.txt文件并可以直接编辑文本内容,编辑完成后按esc,:,然后键入wq即可保存文件并跳出vim模式进入ex模式
    2. 使用git add命令
    $ git add readme.txt
    
    1. 使用git commit命令
    $ git commit -m "wrote a readmw file"    /*-m 后面输入的是本次提交的说明*/
    

    如果希望一次性添加多个文件可以使用以下命令

    $ git add file1.txt
    $ git add file2.txt file3.txt
    $ git commit -m "add 3 files."
    
  2. 文件修改
    需要git addgit commit命令,与添加文件操作一样

  3. 文件查询

/*相关命令*/
git status  -->仓库当前的状态
git diff   -->当前版本与上次提交的版本之间的不同
git log  -->历史提交版本信息
git reflog -->历史版本操作记录
  1. 文件删除

    1. 使用git rm命令(或者直接在工作区中将文件删除)
    $ git rm readme.txt
    
    1. 使用git commit命令
    $ git commit -m "remove readme.txt"    
    
  2. 撤销修改

    1. 还未add的修改撤销(需要撤销修改的文件还没有放到暂存区)
    /*撤销`readme.txt`的修改(-- 很重要,而且前后都要有空格)*/
    $ git checkout -- readme.txt 
    
    1. 已经add但是还没有commit的修改撤销
    /*将暂存区对readme.txt的修改退回到工作区*/
    $ git reset HEAD readme.txt
    /*撤销工作区中`readme.txt`的修改*/
    $ git checkout -- readme.txt 
    
    1. 已经commit的修改撤销(提交到本地库)
    /*退回到上个版本*/
    $ git reset --hard HEAD^
    
    1. 已经推送到远程版本库
      无法在本地撤销!!!
  3. 版本选择

    • $ git reset --hard HEAD^ -->退回上个版本
    • $git reset --hard 1094a -->退回到版本号中带有1094a的版本(通常都是版本号前几位数字)

四. 远程版本库

创建远程版本库的目的是为了备份,同时充当主机服务器的作用

  1. 创建(使用github作为远程仓库)

    1. 创建SSH key(使用Git Bash)
    /*使用以下命令然后一路回车(默认无密码)*/
    $ ssh-keygen -t rsa -C "youremail@example.com"
    

    以上操作成功后,在用户主目录里面找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人

    1. 登录github,打开“Account settings”,“SSH Keys”页面;点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容;然后点击“Add Key”,完成!
  2. 将本地库推送到远程库

    1. 创建新git库
      登录github,Create a new repository
    2. 复制git库SSH地址 git@github.com:kyle-yangkai/gitlearnning.git(也可以使用https地址)然后输入命令
      $ git remote add origin git@github.com:kyle-yangkai/gitlearnning.git
      
    3. 将本地库所有内容推送到远程库中
      $ git push -u origin master  /*-u只需要第一次推送的时候使用 如果要推送到远程的dev分支就将master换成dev*/
      
    4. 新建远程分支
      $ git push origin <当前分支>:<新分支名>
      
    5. 删除远程分支(两种方法)
      • $ git push origin :<name> -->推送空分支到远程分支
      • $ git push origin --delete <name> -->直接删除远程分支
  3. 从远程库克隆到本地库

$ git clone git@github.com:kyle-yangkai/gitlearnning.git

五. 分支管理

  1. 一次完整的分支操作

    /*相关命令*/
    $ git branch -->查看分支
    $ git branch -d <name> -->删除分支 (如果没有合并过请使用 -D 强制删除)
    $ cat readme.txt --> 查看readme.txt中的内容
    $ git branch <name> -->创建分支
    $ git checkout <name> -->切换到分支
    $ git checkout -b <name> --> 创建 并切换分支
    $ git merge <name> --no--ff --> 合并分支到当前分支( --no--ff 为普通模式合并,不加该参数则为快速合并,      历史没有该合并记录)
    $ git branch -d <name> --> 删除分支
    
    1. 创建分支
    /*git checkou 命令加上 -b 表示创建并切换 相当于$ git branch dev,  git checkout dev这两条命令  */
    $ git checkout -b dev
    
    1. 修改分支内容并提交(同上面版本库文件修改步骤)
    2. 切换回master分支并将dev分支的内同合并到master
    $ git merge dev
    
    1. 删除dev分支
    $ git branch -d dev
    

    注意:
    1. 各分支之间其实没有任何差别,任何分支都可以称为主分支,我们一般默认master分支为主分支,最终版本都会合并到master分支中
    2. 如果两个分支在同一个文件中都做了不同的修改,那么此时合并操作不会完成,我们需要手动修改该文件,通过$ git status查询冲突文件,然后通过$ cat <file>查看冲突内容,修改完成后再进行合并操作

  2. bug分支处理

    /*相关命令*/
    $ git stash-->保存当前还未提交的工作状态,恢复到最近一次提交的状态
    $ git stash list --> 查看当前stash保存的状态列表
    $ git stash apply --> 恢复上次stash保存的状态
    $ git stash pop -->恢复上次stash保存的状态并删除该次stash状态
    $ git stash drop --> 删除上次保存的状态
    $ git merge <name> --no-ff --> 合并分支到当前分支( --no-ff 为普通模式合并,不加该参数则为快速合并,      历史没有该合并记录)
    $ git branch -d <name> --> 删除分支
    
    1. 使用git add -A暂存当前dev分支新修改和新增的还不能提交的内容
    2. 使用git stash保存当前状态
    3. 确定需要修复的分支,如果是maste分支,先返回到master分支
    4. 创建issue-001分支,完成修复不过的代码提交
    5. 通过master合并完成bug修复
    6. 返回dev分支通过$ git stash apply恢复之前的状态,急需工作

六. 标签管理

  1. 创建标签
    • $ git tag v1.0 --> 给当前分支打标签v1.0 该标签默认搭载最新提交的commit上面
    • $ git tag v0.9 f24sweq -->给commit id是f24sweq的提交打上标签v0.9
    • $ git tag -a v0.1 -m "explain" f24sweq -->-a为标签名 -m为说明文字
  2. 查看标签
    • $ git show v0.1 -->查看该标签的说明文字
  3. 操作标签
    1. 本地标签操作
      • $ git tag -d v0.1 -->删除本地v0.1标签
    2. 远程标签操作
      • $ git push origin v1.0 -->将v1.0标签推送到远程
      • $ git push origin --tags -->推送所有本地标签到远程
      • $ git push origin :refs/tags/v0.9 --> 删除远程v0.9标签

七. 自定义Git

  1. 忽略特殊文件
  2. 配置别名
    • 全局配置 $ git config --global alias.<自定义命令> <git命令> 例子-->$ git config --global alias.ci commit
    • 当前仓库配置 --> 每个仓库的Git配置文件都放在.git/config文件中,在该文件中加上以下内容
    [alias]
      co = checkout
      ci = commit
      br = branch
      st = status
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容

  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,639评论 4 54
  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,485评论 0 13
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,615评论 9 163
  • 安装Git: $ git config --global user.name "Your Name" $ git ...
    云呆呆阅读 292评论 0 0
  • 感謝乖乖一直鼓勵我支持我,以及指出我沮喪消極的弱點。也求主幫助我能夠靠主剛強,更加勇敢。 看完「驢得水」,我深知上...
    NCNeverland阅读 210评论 0 0