• 我的git学习记录


    由于对git还不是很熟悉,重新过了一遍git的知识

    这里提供网上的一个廖雪峰老师的git的pdf

    链接:https://pan.baidu.com/s/18ruaB0G8VobnG5wIc109Hg
    提取码:uufp

    我就是通过这个pdf重新梳理了自己的git技能

    对git也有了比较好的认识

    复习:git
    git diff 查看修改的详情
    git log命令查看历史记录
    git log --pretty=oneline 可以省一些信息
    git add 添加文件到仓库
    git commit -m "说明"
    git status 查看仓库状态
    时光穿梭机
    git reset --hard HEAD^ 退回上一个版本
    回退到某个版本后,后悔了,想恢复到新版本,找不到新版本的commit id
    git reflog 查看历史记录和commit id
    历史版本穿梭: git reset --hard commit_id

    工作区和暂存区
    git commit只负责把暂存区的修改提交
    场景一:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
    git checkout --file
    场景二:当你不但改乱了工作区某个文件的内容,还添加到暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到场景一,第二步按场景一操作。
    场景三:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退操作,不过前提条件是没有推送到远程库。
    删除文件
    一般情况下,你通常直接在文件管理器中
    把没有用的文件删了,或者用rm命令删除
    例子:rm test.txt
    现在你有两个选择:
    一是确实要从版本库中删除该文件,那就用命令git rm 删掉,并且commit:
    另一种情况是删错了,因为版本库里还有,所以可以很轻松地把误删的文件恢复到最新版本:
    git checkout --test.txt
    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原

     远程仓库

    第一步:创建ssh key.
    在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa 和 id_rsa.pub 这两个文件,

    如果已经有了,可以直接跳到下一步。如果没有,创建ssh key
    ssh-keygen -t rsa -C "邮箱地址"
    可以在用户主目录找到.ssh目录,
    里面有id_rsa和id_rsa.pub两个文件,
    这两个就是SSH Key的秘钥,id_rsa是
    私钥,id_rsa.pub是公钥
    第二步,登录GitHub,打开“Account settings”,"SSH Keys"页面:
    "Add SSH Key",填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
    点“Add Key”,你就应该看到已经添加的Key.
    假如你有若干电脑,只要把每台的的电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
    关联远程仓库,首先得在github中创建仓库,关联语句
    git remote add origin git@github.com:vingkong/learngit.git
    把本地库推送到远程,用git push,实际是把当前分支master推送到远程。
    第一次推送:
    git push -u origin master
    之后,每次本地提交后,就可以使用命令git push origin master推送最新修改

    远程仓库克隆
    要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。git支持多中协议,包括https,通过ssh支持的原生git协议速度最快
    分支管理
    创建与合并分支
    git checkout -b dev
    加上-b参数表示创建并切换
    git branch dev
    git checkout dev
    用git branch命令查看当前分支:
    当前分支前面会标一个* 号
    dev分支工作完,切换到master分支
    git checkout master
    git merge命令用于合并指定分支到当前分支
    合并后,删除dev分支
    git branch -d dev
    总结
    查看分⽀:git branch
    创建分⽀:git branch name
    切换分⽀:git checkout name
    创建+切换分⽀:git checkout -b name
    合并某分⽀到当前分⽀:git merge name
    删除分⽀:git branch -d name

    解决冲突
    一个分支修改了文件提交,
    另一个分支修改不同地方了文件提交,无法合并会有冲突。
    当Git⽆法⾃动合并分⽀时,就必须⾸先解决冲突。解决冲突后,再提交,合并完成。
    查看分支的合并情况
    git log--graph --pretty=oneline --abbrev-commit
    分支管理策略
    通常,合并分支时,如果可能,git会用“Fast forward”模式,但这中模式,删除分支后,会丢掉分支信息
    可以强制禁用“Fast forWard”模式,
    Git就会在merge时生成一个新的commit,这样从分支历史就可以看出分支信息。
    请注意--on-ff参数,表示禁用“Fast forward”
    git merge --no-ff -m "merge with no-ff" dev
    bug分支
    情景:你当前在dev分支进行,接到修改bug的任务,当前的工作还不能提交,你现在又必须急着处理bug。
    处理方法:
    git stash
    可以把当前的工作现场储藏起来,等以后恢复现场后继续工作
    首先确定在哪个分支修复bug,
    假设需要在master分支上修改,就从
    master创建临时分支:
    git checkout master
    创建临时分支issue-101
    git checkout b issue-101
    修改好bug,切换到master分支,并完成合并,最后删除issue-101分支
    git checkout master
    git merge --no-ff -m "merged bug fix 101" issue-101
    git branch -d issue101
    修复完后要回到之前的dev分支干活
    git checkout dev
    发现工作现场是干净的,
    使用git stash list 查看
    Git把stash内容存到某个地方了
    恢复有两个办法:
    第一种:git stash apply恢复后,stash内容并不删除,使用git stash drop来删除
    第二种:git stash pop,恢复的同时把
    stash内容也删了

     

    Feature分支
    场景:添加一个新功能时,是不希望因为一些实验性的代码,把主分支搞乱了,所以,每添加一个新功能,

    最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支
    任务:开发代号为Valcan的新功能
    git checkout -b feature-vulcan
    开发完,提交,切回dev,准备合并:
    git checkout dev
    一切顺利的话,feature分支和bug分支类似的,合并,删除
    但是,此时接到上级命令,新功能取消,分支需要取消,使用命令
    git branch -d feature-vulcan
    销毁失败。Git友情提示:
    feature-vulcan分支还没有合并,如果删除,将丢失掉修改,需要强行删除:git branch -D feature-vulcan
    小结:
    开发一个新feature,最好新建一个分支
    如果要丢弃一个没有被合并过的分支,可以通过git branch -D name
    强行删除

    多人协作
    当你从远程仓库克隆,
    git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
    查看远程仓库的信息,用
    git remote 或者
    git remote -v显示更详细
    推送分支
    git push origin master
    如果要推送其他分支,dev
    git push origin dev
    哪些分支需要推送:
    master分支时主分支,因此要时刻与远程同步
    dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步
    bug分支只用于在本地修复bug,就没有必要推到远程了
    feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发
    创建远程分支

    补充:创建远程分支
    首先需要创建一个本地分支
    现在在master分支上,
    git checkout -b dev
    把新建的本地分支push到远程
    服务器,远程分支与本地分支同名
    git push origin dev:dev
    使用git branch -a 查看所有分支,
    会看到dev分支,说明创建dev分支成功
    删除远程分支:
    git push orgin :dev
    推送一个空的分支到远程分支,其实就相当于删除远程分支
    也可以使用
    git push orgin --delete dev

    抓取分支
    多人协作是,都会往master和dev分支推送各自的修改
    场景:
    你的小伙伴,从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支。小伙伴要在dev分支上开发,创建origin的dev分支到本地
    git checkout -b dev origin/dev
    翻译该语句
    本地创建并且切换到dev分支上,接着跟远程origin地址上的dev分支关联起来,origin代表是一个路径,
    git remote -v 查看
    他现在在dev上继续修改,然后时不时地把dev分支push到远程
    碰巧,你也对同样的文件作了修改,试图推送:将推送失败.
    因为你的小伙伴的最新提交和你试图推送的提交有冲突。
    处理方法:git pull 把最新的提交从
    origin/dev抓下来,在本地合并,解决冲突,再推送。
    git pull 也失败。
    原因是没有指定本地dev和远程origin/dev分支的链接,使用
    git branch --set-upstream dev origin/dev
    在pull

    标签管理
    git 的标签虽然是版本库的快照,但其实它就是指向某个commit的指针

    创建标签
    首先需要打标签的分支上:
    git branch
    git tag v1.0
    查看标签
    git tag
    v1.0
    默认标签是打在最新提交的commit上。有时候,如果忘了打标签,
    比如已经周五了,但应该在周一打的标签没有打
    找到历史提交的commit id ,然后打上
    git log --pretty=oneline --abbrev-commit
    git tag v0.9 6224937
    在用命令git tag 查看标签:
    git tag
    注:标签不是按时间顺序列出,而是按字母排序的
    git show tagname查看标签信息:
    git show v0.9
    操作标签
    如果标签打错了,也可以删除
    git tag -d v0.1
    推送某个标签到远程,使用命令
    git push origin v1.0
    或者一次性全部尚未推送到远程的本地标签
    git push origin --tags
    如果已经推送到远程,要删除远程标签就麻烦一点:先删除本地
    git tag d v0.9
    再删除远程:
    git push origin :refs/tags/v0.9

  • 相关阅读:
    Django的路由层详情
    如何创建一个django工程与和mysql打通
    初识Django
    初识爬虫
    MongoDB 全部笔记
    爬取视频案例
    课程接口调试
    vue的初识与简单使用---前后端分离通过接口调取数据
    requirements.txt 的使用与创建
    数字与字符串类型
  • 原文地址:https://www.cnblogs.com/Vinkong/p/12679507.html
Copyright © 2020-2023  润新知