git学习笔记

244 阅读8分钟
  • 优质笔记:www.liaoxuefeng.com/wiki/896043…
  • 1.git安装pc.qq.com/detail/13/d…
  • 2.打开git操作窗口:在项目路径下,点击鼠标右键会看到git bush here
  • 3.本地仓库初始化:git init
  • 4.查看本地文件状态(红色的是未提交的文件):git status
  • 5.将本地文件传送至暂存区:git add 文件名/*
  • 6.查看本地文件状态(绿色是已经提交到暂存区的文件): git status
  • 7.将暂存区文件提交到本地仓库:git commit -m"提交信息"
  • 8.如果未创建GitHub云端仓库,则继续,否则跳至11步:
  • 9.GitHub注册账号:
    • 注意事项:邮箱不能用qq邮箱,qq邮箱接受不了验证消息
    • 配置ssh:只有你添加的信任的主机的ssh密钥才可以修改文件
    • 生成ssh密钥:
      git bash输入:$ ssh-keygen -t rsa -C "youremail@example.com"   
      一路回车即可;
    • 如果成功了,那就再C盘用户文件夹中有一个.ssh文件夹,找到里面的id_rsa.pub文件复制出来
    • 进入GitHub---setting--SSH and GPG keys--配置ssh,标题随意;
    • 配置完以后,只有你添加了ssh的电脑才能提交文件;
  • 10.在GitHub上创建云端仓库,仓库建完后默认会有提示代码,包括3-7步的操作;
  • 11.将本地仓库和云端仓库连接:git remote add origin(默认的,可以自定义云端仓库名)+ 云端仓库地址(点击克隆/下载里面有)(https://github.com/gjbbd/testlp.git)
  • 12.将本地仓库推送至云端仓库:git push -u origin master/分支名
    • 如果出现failed to push some refs to 地址问题:
      • 1.git pull --rebase origin master
      • 2.git push -u origin master
  • 13.后面的提交云端的操作将跳过8-12步,直接git push origin 分支名
    • 14.查看提交日志(时间由近到远):git log 
      •  点按q退出当前日志,如果出现输入不显示的问题,那么就输入reset后就好了;
      • git log -1: 显示最近一次的日志 
  • 15.查看当前本地文件列表:git ls-files   或  ls
  • 16.将本地文件版本回退到以前的版本:
    • 回退到上一个:git reset --hard HEAD^
    • 回退到前n个版本:git reset --hard HEAD~n
  • 17.如果版本回退后又想反悔了/回退错了:
    • 查看操作指令历史记录确定要回退的指令id:git reflog
    • 回退的操作:git reset --hard 指令id:例如$ git reset --hard 8d998ad
    • 回退完以后文件内容会自动替换为指定版本时的文件内容:cat 文件名;
  • 18.撤销修改:
    • 修改了但未添加到暂存区:丢弃工作区的所有修改:git checkout -- 文件名
    • 修改了并且添加到暂存区:丢弃暂存区的修改重新放回工作区:git reset HEAD 文件名
    • 修改了并且提交到本地版本库了:使用步骤16来撤销本次操作
  • 19.删除文件:
    • 从本地仓库/版本库删除文件:git rm 文件名
    • 恢复删除文件:
      • 第一步:git reset HEAD 文件名
      • 第二部:git checkout  文件名
  • 20.从云端克隆文件:
    • 多人协作开发,需要每个人都从远程克隆一份
    • 克隆指令:git clone  仓库地址(https://github.com/gjbbd/testlp.git)
  • 21.分支定义和基本操作:
    • 定义:分支就是每位开发者自己工作的办公区。试想一下:如果你的办公区正在进行一项业务的某一部分,你的工具摆的一整个办公区都是就不行了,你手上的工作没有干完其他人就没办法干活;但是当把整个工作区划分为小块时,你们各自有各自的办公区,互不干扰,同时进行,等所有人都干完了属于自己的那部分业务时,再统一到一个办公区进行组装;
    • 创建分支:
      • 创建分支并切换到该分支:
        • git checkout -b 分支名      或者     git switch -c 分支名
        • 创建分支:git branch 分支名    
        • 切换分支: git checkout 分支名     或者    git switch 分支名
    • 查看当前分支:git branch 当前选中的分支前会加*
    • 切换分支:git branch 分支名      或者      git switch 分支名
    • 合并分支:git merge 要被合并的分支名
    • 删除分支:git branch -d 分支名        注意:删除分支前要将分支切换
  • 22.解决冲突:
  • 23.分支的合并:
    • 使用普通模式合并,保存合并信息:
      • git merge --no-ff  -m"合并信息"  合并的分支名
  • 24.提交bug修复代码:
    • 如果当前没有正在干到一半的工作:
      • 1.先将当前未完成工作区暂存起来:git stash
      • 2.确认要在哪个分支上修复bug,假定从master上修复:
        • 2.1:切换分支到master:git switch master
        • 2.2:在master分支新建一个新的分支用来提交修复代码:git branch 新分支 然后切换到新分支 git switch 新分支;
        • 2.3:提交代码到新分支:git add 文件; git commit -m"message";
        • 2.4:切换到master分支,合并代码:git switch master ; git merge --no-ff -m"msg" 新分支名
      • 3.查看当前暂存区的内容:git stash list
      • 4.返回前面暂存的工作区:git switch 暂存分支名; git stash pop恢复的同时删除stash暂存区内容
      • 5.若修复的bug也需要合并到当前的分支,可以把bug提交的修改复制到当前分支:git cherry-pick 命令id(输入git reflog日志中找commit bug的id)
      • 6.删除为提交bug而新建的分支:git branch -d 新分支名;
  • 25.提交新功能代码-feature分支:
    • 1.新建一个分支并切换到该分支在上面开发新功能:git checkout -b 分支名 ;
    • 2.开发完毕,提交代码:git add 文件名; git commit -m"message";
    • 3.切回开发分支dev(dev为开发分支,master为正式版本提交分支):git switch dev;
    • 4.放弃开发的分支,强行删除:git branch -D 新功能分支名
    • 5.并分支文件到dev:git merge --no-ff -m"msg" 新功能分支名
    • 6.如果已经合并了,那么就git rm 文件名
  • 26.多人协作(切记要将开发者的所有电脑的ssh都绑定到同一个GitHub上):
    • 当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin

    • 要查看远程库的信息:git remote  或者  git remote -v显示详细信息

    • 推送本地分支到云端:git push origin 分支名  ;  推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上

    • 如果推送失败,先用git pull抓取远程的新提交;

      • 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
    • git pull---git status---git add 文件名---git commit -m"msg"---git push origin 分支名

    • 分支是否推送:

      • master分支是主分支,因此要时刻与远程同步;

      • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

      • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

      • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

  • 27.标签管理:
    • 作用:作为指向某个commit的指针,commit号不方便记忆,使用tag就相当于给commit起别名;
    • 查看所有的标签:git tag
    • 注意事项:查看标签时标签的显示顺序为字母排序不是时间
    • 查看某个标签的详情:git show 标签名
    • 创建标签:
        • 将分支切换到哟啊打标签的分支
        • git tag 标签名
      • 如果给已经提交了的文件补充标签:
        • 查看log记录,并找到相应的commit  的 id:git log --pretty=oneline --abbrev-commit
        • 补充标签: git tag 标签名  id
      • 创建带有说明的标签,用-a指定标签名,-m指定说明文字:
        • git tag -a 标签名 -m"说明文字"  id
    • 删除标签:
      • 删除本地标签:
        • git tag -d 标签名
        • 创建的标签都只存储在本地,不会自动推送到远程。打错的标签可以在本地安全删除。
      • 删除远程标签:
        • 先从本地删除:git tag -d 标签名
        • 再从远程删除:git push origin :refs/tags/标签名
    • 推送标签到远程:
      • 推送单个标签到远程:
        • git push origin 标签名
      • 推送所有标签到远程:
        • git push origin --tags
  • 28.码云使用:
    • 生成并添加SSH公钥;
    • 关联本地和云端仓库--操作同步骤9(GitHub)git remote add  远程库地址
    • 关联库--冲突解决(远程库重名已存在):
      • 方法一:删除已有库
        • 如果关联失败,则查看远程库信息:git remote -v
        • 删除已有的其他远程库:git remote rm origin
        • 再关联码云库
      • 方法二:更改云端库名称--多库共存
        • 删除默认关联的origin库(选择性操作): git remote rm origin
        • 先关联删除的GitHub远程库:git remote add 自定义远程库名 远程库地址
        • 再关联码云远程库:git remote add  自定义远程库名  远程库地址
        • 提交代码:
          • 提交到GitHub:git push github master
          • 提交到码云库:git push mayun master
  • 29.指定某些特殊/机密文件被忽略不要上传:
    • 在Git工作区的根目录下创建一个特殊的.gitignore文件(Windows需要使用另存为来新建这种文件),然后把要忽略的文件名填进去(new.txt),Git就会自动忽略这些文件。
    • 提交.gitignore文件:git add .gitignore      git commit -m".g"
    • 查看本地库状态:git status 如果为空不显示new.txt则成功;
    • 或者试着提交new.txt文件,不能提交为成功
  • 30.强制上传被忽略的文件:
    • git add -f 文件名
  • 31.给指令配置别名,简化操作:
    • 修改单个指令:
      • 拿git status 举例: git config  --global alias.别名  status
    • 修改多个指令:
      • 拿reset HEAD举例:git config --global alias.别名 "reset HEAD"
  • 32.搭建git服务器:www.liaoxuefeng.com/wiki/896043…
  • 完结。