zoukankan      html  css  js  c++  java
  • git版本控制入门

    一. 为什么要用版本控制系统

    1. 更方便的存储版本

    2. 恢复之前的版本

    3. 更方便的进行对比

    4. 协同合作

    二. git.exe安装

    三. 简单配置

    没有进行配置会出现警示信息,通过命令配置

    git config --global user.name "cnhkzyy"               #配置用户名
    git config --global user.email "1069966476@qq.com"    #配置联系邮箱

    查询最小用户配置

    git config --global --list

    四. 建立git仓库

    1. 已有目录的时候

    cd file_folder
    git init

    (1) 已有一个目录,测试报告

    (2) 进入测试报告目录,点击"Git Bash Here"

    (3) 执行"git init",可以看到测试报告目录下出现了一个.git目录

    这里面存储了版本控制信息

    2. 没有目录的时候

    cd file_folder
    git init projectsname   #重新命名一个新的目录

    在 测试git 目录下,执行git init demo,会生成一个demo的新目录,demo目录下的.git目录,保存着版本信息,demo下没有项目内容,我们可以添加项目内容

    五. git配置优先级

    git config --local     local只对仓库有效。缺省等同于local

    git config --global   global对登录用户所有仓库有效

    git config --system  system对系统的所有用户有效

    优先级:local > global > system

    六. git版本提交

    git add file            #执行完会把文件存到临时空间

    git add .               #添加该目录下的所有文件

    git commit -m "版本信息"      #正式提交到git仓库

    (1) 在demo目录下新建一个测试报告.txt文件,文件内容为"test"

    (2) 把文件添加到暂存区

    (3) 提交

    (4) 查看提交


    (1) 在本地新建一个readme.txt文件,文件内容为"欢迎来到git世界"

    七. 版本状态查看

    git status

    git status -s            可以用简短的信息进行阐述

    git status --short

    (1) 往readme.txt里更新一段文字:"git是一个分布式的版本控制系统"

    (2) git status,可以看到文件被更新,但没有被提交,readme.txt为红色

    (3) 使用git add readme.txt提交到暂存区后,再次使用git status查看,发现,readme.txt变为绿色

    (4) 使用git status -s 查看更简短的信息,发现只有一个绿色的M,M表示修改已被提交到暂存区

    (5) 新添加一个文件,new_file.txt,使用 git status -s 查看,发现前面有个红色的??,??表示新添加的文件,还没有提交到暂存区

    (6) 使用git add new_file.txt,将new_file.txt提交到暂存区,然后使用 git status -s 命令查看,发现前面有个绿色的A,A表示新添加的文件

    (7) 正式提交到仓库,git commit -m "注释",这里我打的有点问题,一不小心跟成了文件名。然后使用git status -s 查看,发现没有内容了

    八. git历史版本查看

    git log   最简单的使用

    git log --pretty=oneline   只显示一行

    git log -p  显示版本之间的差异

    git log -5  显示最近5个版本

    git log -5 -p  显示最近5个版本及他们之间的差异

    git log --stat  查看大体的统计信息

    (1) git log查看最新三次提交的日志(时间顺序倒序)

    (2) git log --pretty=oneline,显示简短的提交信息

    (3) git log -p 查看版本之间的差异

    (4) git log -2 查看最近提交的两个版本

    (5) git log -2 -p

    (6) git log --stat 查看大体的统计信息

    九. 忽略文件gitignore

    # 注释

    glob 模式匹配,比较类似正则表达式匹配

    * 星号,匹配0或者任意字符

    [abc]  任何一个在括号内的字符

    ?  匹配一个任意字符

    /  结束指定目录

    !  取反

    (1) 借助vscode,新建下面几个文件和目录

    (2) 编辑.gitignore文件,写入以下内容

    (3) 所有更改暂存,然后提交,发现demo.pyc也提交了,有点诡异

    十. 版本比对

    git diff  在未提交到缓存区之前,比对版本之间的差异

    git diff 老版本  新版本

    git diff --staged   已经添加到暂存区的差异

    git commit -a -m "注释"   添加并提交修改到git仓库

    (1) 在未修改文件之前,git diff 发现无内容,在demo.py中新增 import time,然后执行 git diff,发现有内容了

    (2) 在使用了 git add . 命令暂存之后,再使用 git diff,发现没内容了

    (3) 修改demo.py,新增内容"time.sleep(2)",使用git commit -a -m "time sleep"可以一步到位,将修改内容添加到git仓库


    (1) git diff 老版本commit哈希值  新版本commit哈希值 ,哈希值可以是一部分。如果想对比老版本和新版本的差异,git diff 新版本 老版本即可

    (2) 在demo.py文件中加入一行 print("Hello World!"),然后git add . ,这时候使用 git diff --staged,发现了提交到暂存区后的差异

    (3) 使用git commit 提交到git 仓库后,发现git diff --staged没有内容

    十一. rm删除文件

    git restore --file   暂存之前:不将文件添加到暂存,老的git版本是git checkout -- <file>

    git restore --staged <file>   暂存之后:删除文件的暂存,老的git版本是git reset HEAD <file>

    git rm file   添加到git仓库之后:删除文件,本地和版本控制系统都删了

    git rm --cached file   添加到git仓库之后:删除文件,版本控制系统删了,本地还存在,如果想重新提交可以使用 git add和git commit

    git rm *.pyc

    (1) 在demp.py中新增一行代码,执行 git status

    (2) 执行git checkout -- demo.py后发现那一行消失了

    (3) 重新加入一行print("Hey"),提交到暂存区,再从暂存区删除,最后使用git status查看状态

    (4) git rm 测试报告.txt,发现删除了本地没有了,git rm --cached new_file.txt,发现删除了本地仍然存在

    (5) git rm .*pyc,删除所有的.pyc文件

    (6) 删除后要git commit 提交一下

    十二. mv移动文件

    git mv 老文件名  新文件名

    等价:

    mv  老文件名  新文件名

    git rm  老文件名

    git add  新文件名

    (1) 先创建一个doc目录,将readme.txt移动到doc下,并改名字为read.txt,最后提交到git仓库

    (2) 将demo.py移动到doc/下,新的路径为doc/demo.py

    删除旧的demo.py

    将新的doc/demo.py添加到暂存区

    提交到git仓库

    十三. 文件补录

    git commit --amend   有时候提交过一次记录只有,又修改了一次,仅仅是改动一些较少的内容,可以使用git commit --amend

    (1) 新增了一条代码,这时候使用git commit -amend -a提交到git仓库

    (2) 可以使用git diff 老版本 新版本  查看新老版本的差异

    十四. 标签

    放在生产环境的版本,需要迭代,一般需要打标签

    git tag -a tagname -m "提交信息"   附录标签

    git tag tagname  轻量标签

    git show tagname  

    git tag   显示所有的标签

    git tag -a tagname  补录标签

    git tag -l "v1.8*" 匹配所有以v1.8开头的标签

    git tag -d tagname   删除某个标签

    (1) 打附录标签

    (2) 查看标签

    (3) 打轻量标签

    (4) 查看轻量标签


    (1) 显示所有的标签

    (2) 匹配所有以v开头的标签

    (3) 使用git log,查看所有提交记录,想把Hello World这个提交打个标签,使用git tag -a v0.0.0 ed3350

    (4) 删除某一标签qingliangv1

    十五. checkout 检出

    git checkout 版本号

    git reflog   查看所有的日志

    git checkout 标签名

    (1) git checkout 版本号  检出到某一版本,此时使用git log,只能查看当前版本之后的记录

    (2) 要想查看所有记录(包括之前的)使用 git reflog

    (3) 根据标签名检出

    十六. 别名

    git config --global alias.st 'status'     给status起别名st

    git config --global alias.last 'log -1 HEAD'   给查案最后一行记录起别名 git last

    git config --global alias.logol 'log --pretty=oneline'  给一行显示所有记录起别名git logol (未生效)

    (1) 给git status设置别名 git st

    (2) 给查看最后一条记录,起别名git last

    十七. github的使用

    十八. git远程地址

    git remote 查看远程地址

    git remote -v

    git remote add 名称  远程url

    (1) 添加远程地址

    十九. 远程push和pull

    git remote show 远程名字

    git push 远程名字 master(分支名称)

    git fetch 远程名字

    git pull 远程名字

    (1) git remote show git_study

    (2) git push 仓库名 分支名

    (3) 在github项目下创建一个新的文件test_fetch,git fetch 远程名字,git fetcn通过用在多个分支的情况,它会手动进行分支的合并,在只有一个分支的情况下,建议使用git pull,git pull会自动合并

    刚刚新的文件没有显示在本地,是因为没有合并

    本地也有了

    二十. 远程名字修改

    git remote rename 旧名字 新名字

    git remote rm 远程名字

    (1) 修改远程名字为study

    (2) 删除远程仓库

    (3) 重新添加远程仓库

    二十一. 克隆远程项目

    git clone url

    (1) 在本地新建一个new_project的目录,在里面打开git bash,然后使用git clone 项目url,可以克隆远程项目到本地

     

  • 相关阅读:
    PHP中使用CURL实现GET和POST请求
    PHP 正则表达式匹配函数 preg_match 与 preg_match_all
    微信跳转黑科技:微信跳转技术让微信电商从此不缺流量
    PHP通过get方法获得form表单数据方法总结
    php获取微信基础接口凭证Access_token
    PHP命名空间与自动加载类详解
    PHP如何搭建百度Ueditor富文本编辑器
    PHP调用微博接口实现微博登录的方法示例
    PHP常用日期加减计算方法实例
    微信公众平台---带参数二维码生成和扫描事件
  • 原文地址:https://www.cnblogs.com/my_captain/p/12253023.html
Copyright © 2011-2022 走看看