• Git语句


    git config --global user.name "xxxx"
    git config --global user.email "xxxx"
    
    • 1
    • 2

    创建一个版本库:

    $ mkdir learngit
    
    • 1
    $ cd learngit
    $ pwd
    
    • 1
    • 2

    /Users/michael/learngit 说明仓库位于此路径内

    通过git init命令把这个目录变成Git可以管理的仓库

    把一个文件放到Git仓库:
    1.用命令git add告诉Git,把文件添加到仓库git add readme.txt
    2.用命令git commit告诉Git,把文件提交到仓库git commit -m "wrote a readme file"

    运行git status查看文件是否被修改 git status命令可以让我们时刻掌握仓库当前的状态
    如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
    知道做了什么修改之后,再提交修改:
    1.git add xxx
    2.git commit -m "xxx版本名"

    git log再看看现在版本库的状态

    在Git中,用HEAD表示当前版本 使用git reset命令:$ git reset --hard HEAD^

    查看文件内的内容 :cat xxxx

    指定回到未来的某个版本:$ git reset --hard xxx版本号前几位
    Git提供了一个命令git reflog用来记录你的每一次命令

    10.20
    stage暂存区 master分支

    Git跟踪并管理的是修改,而非文件
    多次修改步骤: 不要忘记使用git add将新修改的文件放到暂存区,然后一起提交
    第一次修改 -> git add -> 第二次修改 -> git add -> git commit

    撤销修改:
    刚修改之后,未add:git checkout -- file可以丢弃工作区的修改
    add后 :命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

    删除文件:rm file 此时使用git status可以得知哪个文件被删除
    从来没有被添加到版本库就被删除的文件,是无法恢复的!
    两个选择1.确实要从版本库中删除:git rm file 并且提交git commit
    2.点错了 恢复最新版本:git checkout -- file

    创建一个新的分支 git checkout -b dev (约等于 git branch dev git checkout dev)
    git branch命令查看当前分支 他会列出所有分支,当前分支前会标一个星号
    可正常进行提交
    切换回master分支: git checkout master
    将dev分支的工作成果合并到master分支上:git merge dev
    删除dev分支:git branch -d dev

    切换分支还可使用 switch
    创建并切换到新的dev:git switch -c dev
    直接切换到已有的master分支:git switch master

    10.21
    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
    用git log --graph命令可以看到分支合并图。 git log --graph --pretty=oneline --abbrev-commit

    fast forward模式下,删除分支后会丢掉分支信息
    使用–no-ff方式的git merge:git merge --no-ff -m "merge with no-ff" dev (∵要创建新的commit,所以加-m)
    合并后的历史有分支,能看出来曾经做过合并

    分支策略

    bug分支解决流程:
    git stash功能 暂时隐藏bug
    git stash list 查看工作现场
    解决bug
    恢复stash内容:1、git stash apply 恢复后,stash内容并不删除,需要用git stash drop来删除
    2、git stash pop,恢复的同时把stash内容也删了

    恢复指定的stash,用命令:git stash apply stash@{0}
    cherry-pick命令,让我们能复制一个特定的提交到当前分支 master的bug解决后,复制到dev

    feature分支:每添加一个新功能都要新创建一个分支,完成后,合并,删除该分支
    Git友情提醒,分支没有被合并,如果删除,将丢失掉修改,如果要强行删除,需要使用大写的-D参数。

    远程仓库

    git remote add origin git@github.com:michaelliao/learngit.git
    
    • 1

    把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程
    git push origin master 将本地master分支的最新修改推送至GitHub
    git remote -v:查看远程库信息 git remote也可以
    删除远程库 git remote rm
    使用git clone克隆一个本地库git clone git@github.com:michaelliao/gitskills.git

    推送分支:git push origin master
    master是主分支,与远程同步
    dev是开发分支 在此工作 也需同步
    bug分支在本地修复bug
    feature分支 看情况
    抓取分支:共同推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突
    :先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送
    设置dev和origin/dev的链接:git branch --set-upstream-to=origin/dev dev
    再git pull
    再push

    因此,多人协作的工作模式通常是这样:
    首先,可以试图用git push origin 推送自己的修改;
    如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    如果合并有冲突,则解决冲突,并在本地提交;
    没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
    如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建
    用命令git branch --set-upstream-to origin/

    rebase
    rebase操作可以把本地未push的分叉提交历史整理成直线;
    rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

    git rebase
    
    • 1

    标签管理 默认标签是打在最新提交的commit上的
    使用git tag v1.0 打新标签
    git tag查看所有标签
    对历史提交的id打标签 先git log。。。找到id,再git tag v0.9 id号
    使用git show v标签 查看标签信息
    创建带有说明的标签(-a指定标签名 -m指定说明文字):git tag -a v0.1 -m "version 0.1 released" 1094adb

    删除标签:git tag -d v0.1
    推送标签到远程: git push origin v1.0
    一次性推送全部尚未推送到远程的本地标签:git push origin --tags
    删除推送到远程的标签:1.删除本地2.删除远程git push origin :refs/tags/v0.9 远程是否删除成功需要github查看

    在GitHub上,可以任意Fork开源仓库;
    自己拥有Fork后的仓库的读写权限
    让Git显示颜色,会让命令输出看起来更醒目:git config --global color.ui true

    忽略某些文件时,需要编写.gitignore;
    .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
    要添加一个被.gitignore忽略的文件 强制添加git add -f App.class
    git check-ignore -v App.class 若.gitignore有问题,检查哪个规则写错

    配置Git的时候,加上–global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用
    查看配置文件cat .git/config

  • 相关阅读:
    CopyOnWriteArrayList源码分析
    IDEA文件UTF-8格式控制台输出中文乱码
    手把手教会:XML建模
    git密码提交切换SSH提交
    oracle 查询2021年至今仅在B2C渠道购物过的用户数
    asp.net core webapi接收application/x-www-form-urlencoded和form-data参数
    【我拥有的书】
    什么是顶级域名?如何获得顶级域名解析方案
    防火墙实验二——实现域间、域内双向NAT、双机热备实验
    短信群发怎么发转化率会比较高?
  • 原文地址:https://blog.csdn.net/qq_43627109/article/details/127724958