Git入门-超详细教程

从廖老师网站上总结的Git笔记,对常见操作进行了总结。

一 版本库、文件操作

1. 创建版本库

  GitBash中 cd 到需要作为版本库的目录,执行git init,创建成功后会生成.git文件夹

2. 添加文件到版本库

  首先,文件必须放在在版本库对应的目录下,
  添加文件到版本库步骤:

  1. git add 文件.文件类型,将文件放进暂存区(暂存区,工作区概念详见第4小节)
  2. git commit -m “本次提交的说明”,添加到版本库
    备注:
    git status 随时掌握工作状态,提示信息分析:
      Changes to be committed: 已进入暂存区,但还未提交到版本库,需要commit
      Changes not staged for commit:更改了,但是还未进入暂存区
      Untracked files:表示该文件还从来没有被添加进版本库

3. 版本回退

  1. git log 显示从最近到最远的提交日志,git log --pretty=oneline 使每个日志单独成行。
  2. git中,用HEAD表示当前版本
  3. 回退到上一个版本:git reset --hard HEAD^,一个“^”表示回退1个版本,“~100”回退100个版本。
  4. 返回新版本:git reset --hard 新版本的Id
  5. git reflog查看命令历史,以便确定要回到未来的哪个版本

4. 工作区和暂存区

  工作区:在电脑里能看到的目录; 版本库:在工作区有一个隐藏目录.git,是Git的版本库。 Git的版本库中存了很多东西,其中最重要的就是称为stage(或者称为index)的暂存区,还有Git自动创建的master,以及指向master的指针HEAD。
在这里插入图片描述

  1. git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别
  2. Git是跟踪修改的,而不是跟踪文件,每次修改,如果不用git add到暂存区,那就不会加入到commit中。
撤消修改
  1. 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
  2. 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file就回到了场景1,第二步按场景1操作。
  3. 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
  1. 提交到版本库的文件,可以先 rm file删除文件
  2. 确实要从版本库中删除该文件,那就用命令git rm file删掉,并且git commit
  3. 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本git checkout -- file
    备注git checkout -- file就是将版本库的文件替代工作区的文件

二 远程仓库关联、克隆

1: 在GitHub上添加公钥

  1. 创建GitHub账号
  2. 创建SSH Key,GitBash执行
    ssh-keygen -t rsa -C "youremail@example.com",在用户主目录(在Bash先后中执行 cd ~/.sshpwd即可找到主目录路径)下检查是否有.ssh目录,里面有id_rsa(私钥)和id_rsa.pub(公钥)两个文件,这两个就是SSH Key的秘钥对。
  3. 打开GitHub,在个人主页找到setting,找到SSH and GPG keys,然后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
    在这里插入图片描述

2: 将本地仓库与远程仓库关联

  1. 本地仓库为git,在GitHub上同样新建一个仓库为git,此时远程git仓库为空.
  2. 创建远程仓库后,在GitBash中,在本地的gitm目录里,执行命令git remote add origin git@github.com:用户名/仓库名.git实现关联
  3. 执行git push -u origin master本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程(执行完后在GitHub上就可看到内容)。以后每次本地提交后,使用命令git push origin master推送最新修改

3: 从远程仓库克隆

  1. 首先确保远程仓库有需要克隆的仓库,然后cd到本地仓库目录的上一级目录,执行:git clone git@github.com:用户名/仓库名.git,就会发现克隆到本地了。
  2. Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快

三 分支管理

1: 创建与合并分支

  1. 创建分支dev: git branch dev;切换至div分支:git checkout dev,一句话:git checkout -b dev
  2. git branch命令查看当前分支,当前分支前面会标一个*
  3. 合并分支 ,先git checkout master切换到主分支,然后执行git merge dev进行合并。然后可以再执行git branch -d dev删除分支
  4. 查看分支:git branch
    创建分支:git branch name
    切换分支:git checkout name
    创建+切换分支:git checkout -b name
    合并某分支到当前分支:git merge name
    删除分支:git branch -d name

2: 解决分支冲突

  当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph命令可以看到分支合并图。
  备注: 进入log后直接按 Q就可以退出。

3: 分支管理策略

  合并分支时,默认采取的为Fast farword模式,这种合并看不到合并历史,但是这种模式下,删除分支会丢掉分支信息。
1.禁用Fast farword模式时,合并分支会产生一个commit, git merge --no-ff -m "merge with no-ff" dev 其中,--no-ff参数,表示禁用Fast forward。
采用git log --graph --pretty=oneline --abbrev-commit查看分支历史。

备注:不用–no-ff,实际上只是将master的指针update成dev分支而已,用的还是dev的commit ID,而使用之后,则是重新commit了一哈,有了新的commit ID
在这里插入图片描述

4: Bug分支

我个人觉得场景是这样的。设A为游戏软件

  1. master 上面发布的是A的1.0版本
  2. dev 上开发的是A的2.0版本
  3. 这时,用户反映 1.0版本存在漏洞,有人利用这个漏洞开外挂
  4. 需要从dev切换到master去填这个漏洞,正常必须先提交dev目前的工作,才能切换。
  5. 而dev的工作还未完成,不想提交,所以先把dev的工作stash一下git stash。然后切换到master
  6. 如果是在master修复bug,就在master建立分支issue101并切换. git checkout -b issue101
  7. 在issue101上修复漏洞,并git commit
  8. 修复后,在master上合并issue101 ,git merge --no-ff -m "merged bug fix 101" issue-101
  9. 切回dev,git stash list命令看看stash内容,然后git stash pop,恢复的同时把stash内容也删了继续工作。

5:强制分支删除

  发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D branchname强行删除。

6:多人协作

多人协作的工作模式通常是这样

  1. 查看远程库信息,使用git remote -v

  2. 本地新建的分支如果不推送到远程,对其他人就是不可见的;

  3. 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

  4. 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

  5. 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  6. 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

四 标签管理

1: 前言

    Git的标签就是是版本库的快照,它其实就是指向某个commit的指针(跟分支很像,但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。
     注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

2:创建标签

  1. 切换到需要打标签的分支 ,然后 git tag tagname
    备注: 可以用git tag查看所有标签,
                可以用git show tagname查看标签信息
  2. 标签默认是打在最新的commit上,如果需要打在之前的commit上,可以使用git log --pretty=oneline --abbrev-commit查看commit id,然后用git tag tagname commitId打上就可以了。
  3. 创建带有说明的标签,用-a指定标签名,-m指定说明文字,git tag -a tagname -m "tag说明" commitId

3:操作标签

  1. 命令git push origin tagname可以推送一个本地标签到远程;

  2. 命令git push origin --tags可以推送全部未推送过的本地标签;

  3. 命令git tag -d tagname可以删除一个本地标签;

  4. 如果标签已经推送到远程,但又需要删除的话,可以先用命令git push origin :refs/tags/tagname删除一个远程标签,然后再用git tag -d tagname删除本地标签。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值