git 常用指令 及 讲解使用方法

注:使用git的过程中,验证过账号以后,win10 中的凭据管理器,会自动保存github账号密码,切换账号需要先删除原先的凭据。

基本概念:
工作区:
     写代码的地方
暂存区:
     .git/index 目录 / stage
     本地代码先提交到暂存区(add),暂存区提交到本地库(commit),然后整个本地库提交到远程库(push)
本地库:
     .git 目录
     包含暂存区
指令:
linux 指令基础:
     vim: 编辑
     :wq 保存并退出编辑
     ls: 列出当前目录文件
     tail -n 3 index.txt: 只显示index.txt的最后三行
     rm: 删除文件
     rm -r: 删除文件夹
     rm -fm:删除隐藏文件夹
     ls -a :显示所有文件(包括隐藏文件)
     ll: 罗列出当前文件或目录的详细信息 同 ls-l
     touch: 创建新文件
     mv: mv 目录名 新目录名 (改目录名字)
     mv 文件名 目录名 (移动文件到目录)
初始化,生成本地库
     git init
设置签名:区分不同开发人员的身份(签名与远程库账号的用户名密码没有任何关系)
   指令:
     git config user.name 名字
     git config user.email 邮箱
   用户级别优先级:
     git config 项目级别 .git/config
     git config --global 登陆当前操作系统的用户范围
     必须有一个签名才能提交代码到远程库,否则不能提交
     数据保存目录: .git/config
提交到暂存区:
     git add good.txt
从暂存区撤回:
     git rm --cached good.txt
提交到本地库:
     git commit(新建文件,先add,添加追踪,以后,可以直接commit)
     git commit -m “提交的版本信息” good.txt (不用进编辑器添加版本信息)
查看历史:
     git log(详细)
     git log --pretty=oneline(一行显示)
     git log --oneline(一行显示)
     git reflog (常用)
版本回退(本地):
     基于索引值(推荐):
          git reset --hard 索引哈希值 (直接到指定位置)
     使用~符号:
          只能往后不能往前 这里退三步
          git reset --hard HEAD~3
     使用^符号:
         只能往后不能往前 ^ 往后一步,n个 ^ 退n步
          git reset --hard HEAD^
版本回退(远程):
    git checkout 版本索引
    ex: git checkout 6bfc9134bf6faff5db5bbc3bd8c7ed3648b23ccf

reset命令的三个参数对比
     soft:
          仅仅在本地库移动HEAD指针:使得所有更改的文件都像git status所说的那样“要提交更改”。
          ex: git reset --soft HEAD^
          从版本库撤销一次提交,本地代码不变
     mixed:
          在本地库移动HEAD指针
         重置暂存区:所有已提交的文件都要重新提交
     --hard:(常用)
          全部重置,三个区一致。删除当前版本所做的一切操作,回到当前版本的最初状态:
          git reset --hard HEAD
         作用:git add添加到暂存区的文件被删除后,通过重置的方式可以找回
删除的文件找回:
     前提:本地库中的历史版本中有该文件
     1、删除操作已提交到版本库:利用版本回退
     2、删除操作未提交到版本库:利用HEAD重置找回
文件对比:
     git diff [版本] 文件名
     git diff index.txt: 直接跟暂存区中的文件比较
     git diff HEAD~1 index.txt:比较上一个版本
     不添加文件名: 比较多个文件的差异
分支概述:
     版本库建立时自动创建主分支master
     分支:在主分支的基础上独立开发新功能
     不同的分支开发不同的功能
     “多线程开发”
     开发完成,则合并到主分支(大的版本升级)
     如果合并到主分支出现bug,则新建一个分支hot_fix(修复),尽快修复bug然后合并

     git branch -v: 查看所有分支
     git branch hot_fix: 创建hot_fix分支
     git checkout hot_fix: 切换到hot_fix分支

     git push origin(地址) hot_fix(分支名)提交到新分支
合并分支:
     1、将分支的修改提交到版本库
     2、切换到接受合并的分支上(master)
     3、执行merge命令: git merge hot_fix
解决冲突:
     两个分支同样的地方,做了不同的修改
     eg:两个分支的 index.txt 同一行 内容不同
     1、 与成员商讨,删除其中一种修改后,把index.txt提交到版本库
     2、 git add
     3、 git commit -m “修改信息” (不需要文件名)
强制合并(放弃本地修改获取最新版本)
     git fetch --all // 获取最新版本
     git reset --hard origin/master 定位到最新版本
远程库操作:
     1、小明创建一个本地库和一个远程库
     2、小明将本地库文件push到远程库
     3、小芳将小明的远程库clone下来变成本地库
     4、小明邀请小芳加入团队,小芳有权限push代码
     5、小芳push版本到小明的远程库
     6、小明pull远程库的代码到本地
保存远程链接到本地
     git remote add 链接简称 链接
删除已保存的远程地址
     git remote rm 地址简称
查看本地保存的远程链接:
     git remote -v (得到两个链接,fetch取回,push推送)
推送到远程库
     git push 链接简称/链接 分支
推送冲突:远程库的a文件已经被小明推送,版本已经更新,则小丽不能再推送,
     小丽必须先获取最新版本到本地,再推送。
     跟本地解决冲突的原理一样。
不获取远程最新版本,强制推送本地代码覆盖远程库
    git push -f ‘remote’ ‘branch’
克隆远程库
     git clone 仓库地址
     1、完整将远程文件复制到本地
     2、在本地创建origin远程地址别名
     3、初始化本地库 (.git)
分步合并远程库(适合谨慎修改):利用 fetch & merge
     读远程库文件
          git fetch origin 分支 (不会改变本地库文件,只把远程文件下载下来)
          查看下载下来的远程文件:
          git checkout ‘origin/master’ 进入下载下来的远程文件目录
          在这里 cat 文件名 查看
     合并远程库文件:
          git merge origin/master
一步获取并合并(适合简单修改):
          git pull origin master
获取远程指定分支
          git clone -b <远程分支名> <远程仓库地址>

跨团队协作:
     团队B向团队A fork 一份远程库(复制到B团队),
     B团队修改,并推送到B的远程库,
     B团队向A团队发起pull request 请求
     A团队通过pull request 接收到B团队的推送
     A团队合并推送
     A团队把远程库修改拉取到本地。

git stash:
暂存本地修改,不会出现在commit记录中,用于紧急修改其它分支bug,由于修改过代码,切换分支会报错,要求先commit保存,因为不想commit当前代码修改进度留下黑历史,所以使用 stash 暂存代码

git stash save ‘备注’

git stash list: 列出所有stash记录

git stash clear: 清空所有 stash

git stash apply: 应用最近一次 stash

git stash apply stash@{1}: 应用第一条记录

git stash drop: 删除最近一次 stash

其它:

放弃本地修改,强制让远程库文件覆盖本地代码:
git fetch --all // 取回远程库文件
git reset --hard origin // 将版本号置到 origin 这个版本上
git pull origin master // 这时候拉取代码就不会报提示了

学习小记,不断记录中,,,。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值