• GIT使用详解


    Git SSH配置,分为三步

    1. 配置基本用户信息
    2. 配置SSH公钥和密钥
    3. 配置远程仓库公钥

    Git Bash配置

    1)$ git config --global user.name “huangyu”

    2)$ git config --global user.email huangyu@qq.com

    Get Clone

    使用git clone从现有Git仓库中拷贝项目

    Git clone <repo> <directory>

    将仓库克隆指定的目录

    克隆Ruby语言的Git代码仓库Grit,可以用下面的命令

    $ git clone git://github.com/schacon/grit.git

    执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个.git的目录,用于保存下载下来的所有版本记录。

    如果要自己定义新建的项目目录名称,可以在末尾指定新的名字:

    $ git clone git://github.com/schacon/grit.git mygrit

    git clone时,可以使用不同的协议,包括sshgithttps等,其中最常用的是ssh,因为速度快,还可以配置公钥免输入密码

    git clone git@github.com:fsliurujie/test.git         --SSH协议

    git clone git://github.com/fsliurujie/test.git          --GIT协议

    git clone https://github.com/fsliurujie/test.git      --HTTPS协议

    配置ssh公钥和私钥

    ssh-keygen rsa -C your email

    rsa为加密算法,-C为注释信息

    生成的公钥路径为~/.ssh/id_rsa.pub 私钥为~/.ssh/id_rsa

    配置远程仓库公钥

    拷贝内容,cat ~/.ssh/id_rsa.pub,复制到远程ssh key下即可

    提交代码的步骤

    git st #查看上次更新后的更改或者写入缓存的改动

    git add <file> #添加修改或新增文件至缓存区

    HEAD commit版本

    Index staged版本

    git diff  #比较工作目录和暂存区域之间的差异

    git diff --cached  #查看已经暂存起来的文件(staged)和仓库之间(HEAD)的差异

    git diff HEAD  #显示工作版本(working tree)和HEAD的差别

    git diff --stat  #显示摘要而非整个diff

    git commit -m xxx  #将缓存区内容添加到仓库中

    git reset HEAD <file>  #用于取消已缓存的内容

    git rm <file>  #git中移除某个文件

    git rm -f <file>  #如果删除之前已经修改过并且已经放到暂存区域的话,使用-f

    git rm --cached <file>  #从暂存区域移除,但仍希望保存在当前目录中

    git rm -r *  #递归删除该目录下的所有文件和子文件

    git mv <old filename> <new filename> #用于移动或者重命名一个文件、目录、软连接

    分支管理

    1)git branch <branch name> #创建分支命令

    2)git checkout <branch name> #切换分支

    3)git checkout -b develop origin/develop #checkout远程Release分支,在本地起名为develop分支,并切换到本地develop分支

    4)git branch -d <filename> #删除分支命令

    git log -x  #查看前x条提交信息

    git log --online  #查看历史记录的简洁版本

    git log --graph  #查看历史什么时候出现

    git标签

    git tag -a <标签>  #为最近一次提交打上(HEAD)“v1.0”标签

    git tag --decorate  #查看标签

    git tag -a v0.9 85fc7e7  #为某次提交追加标签

    git log --oneline --decorate --graph  

    git tag  #查看标签

    git tag -a <tagname> -m runoob.com标签” #指定标签信息命令

    git checkout --readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

    1)readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态

    2)readme.txt已经添加到暂存区后,又作了修改,现在,撤销就是回到添加到暂存区后的状态

    3)readme.txt已将添加到暂存区,并且提交了后,又作了修改,现在,撤销啥也没有,打开readme.txt回到修改之前的状态

    撤销修改,已经commit

    git revert -m 1 HEAD #创建一个新的commit,并且回到合并之前的状态

    git reset --hard commid_id/HEAD~ #回退到指定的commit节点 #将本地仓库、暂存区、工作目录恢复到上一个版本(所有的修改都将失去)

    git reset --mixed HEAD~ #将本地仓库、暂存区恢复到上一个版本,工作目录保存着修改

    git reset --soft HEAD~ #将本地仓库、上一个版本、暂存区、工作目录保存着修改

    没有commit前提下

    git merge --abort #丢弃正在进行的合并

    储藏与清除

    背景:如果在其他分支开发,突然有个更紧急的bug需要修复,怎么办?

    此时只要切回master分支,继续其他分支开发就可以。但是,要留意你的工作目录和暂存区那些还没有被提交的修改,它可能会和你即将检出的分支产生冲突从而阻止git切换到该分支。最好的方法时,在你切换分支之前,保持一个干净的状态,有两个方法:①将修改的文件存储起来,②将修改的文件清除。

    储存文件:指的是在当前分支先将目前修改的文件保存起来(保存进度(stashing)),完成任务之后再回到该分支恢复进度(apply)。

    git stash  

    默认情况下,git stash会缓存下列文件:

    添加到暂存区的修改(staged changes

    l Git跟踪的但并未添加到暂存区的修改(unstaged changes

    但不会缓存以下文件:

    在工作目录中新的文件(untracked files

    被忽略的文件(ignored files

    git stash --include-untracked(-u)  #将当前工作目录已跟踪的文件储藏起来,同时存储未跟踪的文件,使用-a或者--all命令可以stash当前目录下的所有修改。

    git stash list 查看储藏列表

    git stash apply 将最近一次储藏恢复到工作目录,但是恢复后,储藏内容并不删除

    git stash apply stash@{<num>}  #恢复某个指定的缓存

    git stash drop stash@{<num>}   #将某个缓存从列表中移除

    git stash pop 恢复最近一次缓存,并立即从列表上移除

    如果不小心删除了缓存,可以使用g'i't fsck --lost-found命令查看,找到你刚才stash@{0}时成功删除的id,使用git show <id>查看是否为丢弃的改动,是,直接git merge <id> 即可找回

    清除文件

    对于工作目录中一些工作或文件,你想做的不是储藏而是移除

    git clean  移除未跟踪文件(不包括忽略的文件),恢复不了

    git clean -d -f 移除工作目录中所有未跟踪的文件以及空的子目录

    git clean -d -x 移除未跟踪文件(包括忽略的文件)

    远程仓库使用

    远程仓库是指托管在因特网或其他网络中的项目的版本库。其常使用的指令有如下:

    git clone <url>   克隆远程仓库到本地

    git remote  列出每个远程仓库的简短名字

    git remote -v    列出每个远程仓库的简短名字与其对应的 URL

    git remote show [remote-name]   查看某个远程仓库的详细信息

    git remote rename [old name] [new name]  重命名远程仓库

    git remote rm [remote-name]   移除某个远程仓库

    git remote add <shortname> <url>  添加一个远程仓库

    git fetch [remote-name]  从远程仓库数据拉取最新到本地,但不自动合并本地的修改

    git  pull   [remote-name] [branch-name]  把远程仓库数据拉到本地,并自行合并

    git pull 的魔法经常令人困惑所以通常单独显式地使用 fetch merge 命令会更好一些。

    git  push [remote-name] [branch-name]    把本地代码推送到远程仓库,一般先执行git

    pull、在执行git push  确保代码是最新的,不然会被拒绝

    git push [remote-name] HEAD:refs/for/[your branch] 将本地分支push到远程分支,经过评审之后才能merge到远程

    如果一个分支没有关联到远程分支上,使用以下命令:git branch --set-upstream-to=origin/<remote branch> <your branch>

    ***如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令:

    git branch --set-upstream branch-name origin/branch-name

     

    设置别名

     git config alias.br branch

    git config alias.ci commit

    git config alias.co checkout

    git config alias.st staus

    解决中文名字问题

    git config core.quotepath false

     

     

    Vim文件操作

    退出vim

    1)ESC

    2)最下面出现一条能输入命令的地方->输入冒号:

    3)输入命令

    :w 保存文件但不退出
    :w file 将修改另外保存到 file 中,不退出
    :w! 强制保存,不退出
    :wq 保存文件并退出
    :wq! 强制保存文件,并退出
    :q!不保存文件,强制退出
    :e! 放弃所有修改,从上次保存文件开始再编辑

  • 相关阅读:
    void*指针的由来
    Linux下的ELF文件格式简介
    通过中断门或陷阱门的转移——【只上传好图一张】
    ELF(Executable and Linking Format)
    call Init8259A——痛定思痛,不要数典忘祖了
    orange's习题——第三章【中断和异常】
    静态库
    可执行文件elf的格式
    谈谈我对攻读计算机研究生的看法
    tips for C
  • 原文地址:https://www.cnblogs.com/yuhuang/p/12572492.html
Copyright © 2020-2023  润新知