git常用的操作指令

git常用操作

git基本名词

master : 默认开发分支

origin : 默认远程版本库

index / stage : 暂存区

workspace : 工作区

repository : 本地仓库

remote : 远程仓库

git基本概念
  • 工作区: 在电脑中能看到的目录
  • 暂存区: (stage/index), 一般存放在.git目录的index文件中,
  • 版本库: 工作区的.git目录就是git的版本库
git的版本库文件(.git)目录介绍
  • ORIG_HEAD: 远程仓库的最后一次记录状态,当前引用
  • HEAD: 本地仓库 当前引用 文件保存内容为 ref: refs/heads/branchName本地仓库的当前分支
  • FETCH_HEAD : 版本链接,指向当前从远程拉取到的最后一个版本
  • packed-refs : clone仓库时所有的引用
  • COMMIT_EDITMSG : 本地的最后一个提交信息
  • config : 当前git版本的一些配置信息 包括远程url 分支等…
  • index: 暂存区 是一个bin文件, 第一次git add时候生成, 每一个索引都有一个40位的SHA-1 的Hash 和对应的文件名, 文件模式,权限和合并状态,时间戳等…
  • info(文件夹): info文件夹中保存有exclude文件, 主要用于存放仓库的信息,可以添加全局忽略一些文件,文件夹等配置, git add .的时候不去添加进去,也可以写入根目录下的.gitignore文件中
  • hooks(文件夹) : 一些shell脚本
  • objects(文件夹) : 所有文件的对象
  • description : 仓库的描述信息
  • refs(文件夹)
    • heads(文件夹) : 本地分支
      • master : 里面存放当前分支的最后一次提交
      • test : 里面存放当前分支的最后一次提交
    • remotes(文件夹): 远程分支
      • origin(文件夹)
        • HEAD : 存放当前指向分支引用ref: refs/remotes/origin/master
        • master : 远程仓库对应分支最后一次commit
    • tags(文件夹): 标签
      • v1.0.0: 当前标签的对应的提交记录哈希值
  • logs(文件夹) : 提交日志
    • HEAD : 指向本地当前分支的对应的提交日志
    • refs(文件夹)
      • heads(文件夹)
      • remotes(文件夹)
git基本命令
命令解释
git config用于git的基本信息配置
git init可以将当前目录初始化为一个空仓库,并创建一个.git的目录
git status显示文件状态 ,红色表示工作目录的文件已修改未提交,绿色表示文件已提交
git add将文件从工作目录添加至暂存区
git commit将暂存区的修改提交到本地仓库,同时会生成一个commmit-id
git pull获取远程主机某个分支的更新,再与本地指定分支合并
git feach将远程主机上所有分支的更新取回本地,并记录在.git/FETCH_HEAD
git push将本地分支的更新推送到远程主机上
git branch分支管理操作
git checkout创建和切换分支以及撤销工作区的修改
git tag对项目标签进行管理
git log查看历史提交记录
git reset撤销暂存区的修改或本地仓库的提交
git remote管理远程仓库
git merge分支的合并
git stash不提交当前分支修改,切换到其他分支查看,可以使用git stash保存当前的修改
git ignore忽略那些没必要的提交
git 基本操作
  • 新建代码仓库

    # 在当前目录新建一个Git代码仓库
    git init
    # 新建一个目录并初始化为Git代码仓库
    git init [projiet-name]
    # 下载一个项目和他的整个历史代码
    git clone [url]  # 有https和ssh两种下载方式
    
  • git基本配置

    # git 版本更新(windows)
    git update-git-for-windows
    # 显示当前配置
    git config --list
    # 编辑配置文件  --global参数用于全局配置  如果只配置当前git目录 则不用添加该参数
    git config -e --global
    # 设置用户信息
    git config --global user.name "name"
    git config --global user.email "email address"
    # 查看单个配置信息
    git config user.name
    git config user.email
    # 定义别名  方便操作(非必要)
    git config --global alias.st status:则git status可用git st代替
    git config --global alias.co checkout:则git checkout可用git co代替
    git config --global alias.ci commit:则git commit可用git ci代替
    git config --global alias.br branch:则git branch可用git br代替
    
  • 文件的增删改

    # 查看文件状态
    git status
    git status -s  # 极简的方式显示文件状态
    		A:本地新增的文件(服务器上没有)
    		C:文件的一个新拷贝
    		D:本地删除的文件(服务器上还在)
    		M:红色为修改过未被添加进暂存区的,绿色为已经添加进暂存区的
    		R:文件名被修改
    		T:文件的类型被修改
    		U:文件没有被合并(你需要完成合并才能进行提交)
    		X:未知状态(很可能是遇到git的bug了,你可以向git提交bug report)
    		?:未被git进行管理,可以使用git add fileName把文件添加进来进行管理		
    git stash 
    # 查看变更内容  查看git status的详细信息
    git diff
    	尚未缓存的改动:git diff
    	查看已缓存的改动: git diff --cached
    	查看已缓存的与未缓存的所有改动:git diff HEAD
    	显示摘要而非整个 diff:git diff --stat
    # 添加指定文件到暂存区
    git add [file1] [file2]...
    # 添加指定目录到暂存区(递归添加)
    git add [dir]
    # 添加当前目录所有文件
    git add .
    git add --all  # 添加所有文件
    git add *.c  # 添加所有.c文件
    git add --update  # 添加已跟踪文件
    # 删除工作区文件 并将删除文件放在暂存区
    git rm [file1] [file2] ...
    # 停止追踪指定文件 但文件会保留到工作区
    git rm --cached [file]
    # 改名文件,并将这个文件放入暂存区
    git mv [file-original] [file-renamed]
    
  • 代码提交

    # 提交暂存区到仓库
    git commit -m 'commit message'
    # 提交暂存区指定文件到仓库
    git commit [file1] [file2] ... -m 'commit message'
    # 提交工作区自上次commit之后的变化,直接到仓库
    git commit -a -m 'commit message'
    相当于: git add . + git add -m "message"
    # 提交时显示所有diff信息
    git commit -v
    # 使用一次新的commit,代替上一次提交
    # 如果代码没有变化,则用来改写上一次commit的提交信息
    git commit --amend -m 'commit message'
    # 重做上一次commit,并包括指定文件的新变化
    git commit -amend [file1] [file2] ...
    # 修改最后一次提交
    git commit --amend
    
  • 分支管理

    # 本地分支管理
    git branch ---主要用作分支管理和操作
    # 查看本地分支
    git branch
    # 查看本地和远程分支 *的位置表示当前分支
    git branch -a
    # 新建测试分支
    git brtanch test
    # 更改分支名字
    git branch -m test my_test
    # 删除分支
    git branch -d dev
    
    # 切换到某个标签对应的版本
    git checkout tag001
    # 创建和切换分支
    git checkout -b test
    git checkout -b test tag001  # 在tag001标签创建新分支
    ----相当于 git branck test tag001
    		  git checkout tag001
    # 将当前目录所有文件从HEAD移除并且恢复成未修改的样子
    git checkout .
    # 撤销工作目录中文件的修改(文件改动但未git add)
    git checkout --fileName
    
  • 标签管理

    # 列出所有本地标签
    git tag
    # 根据最新提交创建标签
    git tag <tagname>
    # 创建一个带注解的标签, 给最新提交
    git tag -a <tagname>
    # 指定标签信息命令:
    git tag -a <tagname> -m "标签"
    # 删除标签
    git tag -d <tagname>
    
    
  • 查看信息

    # 查看历史提交记录
    git log
    # 每天历史记录打印一行
    git log --oneline
    # 查看某个人的提交记录
    git log --author='name'
    # 查看ascii图形分支合并
    git log --graph
    # 显示n条日志
    git log -n
    # 显示木一个日期之后/之前/之间的记录
    git log --after='2020-08-08' [--before='2020-08-26']
    
  • 远程操作

    # 从远程分支更新,和本地分支合并  git pull [remote host name][remote branch]:[local branch]
    git pull  --- git pull origin master:master
    		  --- git pull origin master (合并到当前分支)
    # 获取远程主机所有分支/master分支更新
    git fetch origin ---git fetch origin master
    # 当前分支合并到master分支
    git merge origin/master
    ----git fetch 拿到的分支风行,在本地主机上用“远程主机名/分支名”的形式读取
    ----git fetch命令的作用是将远程主机上所有分支的更新取回本地,并记录在.git/FETCH_HEAD中
    
    # 推送本地分支到远程主机
    git push  ---- git push origin master
    # 删除远程分支
    git push origin --delete master
    
    # 密钥生成 rsa 非对称密钥  会生成公钥和私钥
    ssh-keygen -t rsa -C 'eamil'
    
    # 添加远程仓库
    git remote add origin https://.............
    
  • 撤销

    # 撤销提交打暂存区文件(git add 但是未git commit)
    git reset HEAD fileName  / git reset --mixed HEAD fileNAme
    # 撤销所有提交
    git reset HEAD . / git reset --mixed HEAD .
    # 提交到本地仓库做撤销(已经git commit 但是未git push)
    # 头指针恢复, 已经提交到暂存区已经工作区内容不变
    git reset --soft commit-id
    git reset --soft HEAD~1
    # 头指针恢复并撤销暂存区提交, 但是工作区内容不变
    git reset --mixed commit-id
    git reset --mixed HEAD~1
    # 将所有内容恢复到指定版本
    git reset --hard commit-id
    git reset --hard HEAD~1
    # commit-id 可以通过git log查看  取6位即可  HEAD~1表示前一次提交(以此类推)
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值