• Git命令笔记


    1. 创建版本库

    $ mkdir learngit
    $ cd learngit
    $ pwd #显示当前所在目录
    /learngit

    2. 初始化

    $ git init

    3. 添加提交

    $ git add readme.txt #告诉git我们添加了readme.txt,可以多次添加,一次提交
    $ git commit -m "版本说明"

     关于添加和提交的一些说明

    #git add 的各种区别:
    git add -A   // 添加所有改动
    git add *     // 添加新建文件和修改,但是不包括删除
    git add .    // 添加新建文件和修改,但是不包括删除
    git add -u   // 添加修改和删除,但是不包括新建文件
    
    #在 commit 前撤销 add
    git reset <file> // 撤销提交单独文件
    git reset        // unstage all due changes
    
    #add/commit 前撤销对文件的修改:
    git checkout -- README.md  // 如果你误删工作区实体文件,可以通过这个命令,将master最新版本还原到工作区

    3. 查看

    $ git status #如果修改了文件,状态会提示你有文件被修改(但不能告诉你哪里被修改),提示你要commit
    $ cat readme.txt #查看实体文件的内容 
    $ git ls-files #查看哪些文件在版本控制下
    
    -----------------------------------------------------------------------------------
    查看当前目录下有哪些远程仓库
     
    $ git remote #远程仓库名字
    $ git remote -v #verbose的缩写,显示详细信息,包括项目url
    需要注意的是,当前Git Shell在不同目录下,git remote显示的远程仓库就不同
    
    -----------------------------------------------------------------------------------
    查看提交的历史
    $ git log --pretty=oneline --abbrev-commit
    
    -----------------------------------------------------------------------------------
    查看不同的地方(修改)
    $ git diff #是工作区(work dict)和暂存区(stage)的比较
    $ git diff --cached #是暂存区(stage)和分支(master)的比较
    意思就是说,我们修改文件并保存实体文件,可以使用git diff查看不同之处,再确定是否add到暂存区,保存到暂存区后可以用git diff --cached查看stage暂存区和master分支的不同之处,决定是否commit
    $ git diff HEAD -- readme.txt  #比较工作区和master最新版本readme.txt的不同
    
    

    4. git日志

        这个显示从初始版本到当前版本的信息

    $ git log #可以查看who在when修改了文件(会写出版本说明),但是这个看着眼花缭乱
    $ git log --pretty=online #这样,每行只显示一次修改,修改信息只有:commitid + 版本说明

       这个显示所有修改的日志

    $ git reflog

    5. 回滚到历史版本

    #第一种方法
    $ git reset --hard HEAD^ #HEAD是当前版本,HEAD^是上一个版本,HEAD^^是上上个版本,HEAD~100是前100个版本
    
    #第二种方法
    $ git reset --hard 04c632e244 #hard后面这一串字符是commit id,只要前面几位就ok,但是如果我们关掉git,想恢复到之前的新版本,但是不知道id了,那就要用第三种方法了
    
    #第三种方法
    $ git reflog #可以显示你所做的修改日志,最前面有id,然后再用第二种方法回滚

    6. 撤销修改

      6.1 撤销工作区修改用

    $ git checkout -- readme.txt #注意--之后又空格
    
    #第一种
    #实体文件被修改,还没add
    #这个就会将工作区实体文件回滚到master最新版本
    
    #第二种
    #修改了一次,add到stage
    #然后又修改了工作区实体文件
    #这个就会将工作区实体文件回滚到stage的版本

       6.2 撤销暂存区修改

    $ git reset HEAD readme.txt
    
    #master :1,stage:2
    #意思是,已经修改了并add到stage,使用上面命令,可以撤销stage里的状态2(unstage),此时stage就回滚到master的状态1

       6.3 撤销版本库的修改

    参考  7.回滚到历史版本

      

    7. 删除文件

    $ rm readme.txt  #删除工作区的实体文件
    $ git rm readme.txt #删除工作区和暂存区文件,commit后版本库也将删除,如果不commit,版本库未删除,那么 git checkout -- readme.txt可以将版本库恢复到工作区。 
    
    

      

    8. 添加远程仓库并推送

    $ git remote add [shortname] [url] #shortname是你命名的远程仓库名字,url格式如下:git@github.com:github_account/repository_name.git
    
    -----------------------------------------------------------------------------------------------------------------------------
    $ git remote add learn_git git@github.com:wongbingming/my_repository.git  #注意记得先在GitHub上先新建仓库,my_repository,不然后面推送会出错
    
    $ git push -u learn_git master #learn_git是之前命名的远程仓库名,master是你要推送到的远程仓库的分支名字

      

    9. 从远程库克隆

    $ git clone [github url]
    
    #举例
    $ git clone git@github.com:BingmingWong/test.git

      

    10. 分支

      10.1. 新建,切换,删除分支

    git checkout -b dev #创建dev分支,把HEAD指针切换到dev
    # git check -b表示新建并切换,相当于下面两条命令
    ------------------------
    # git branch dev 新建
    # git checkout dev 切换
    ------------------------
    # git branch 查看所有分支,*表示当前分支
    
    
    # do something change,then add and commit
    git commit -m "sometext" #提交,生成新的
    
    git checkout master #把HEAD指针重新指向master
    git merge dev #把dev合并到当前master分支
    
    git branch -d dev #删除dev分支,删除是dev不能是当前分支,如果dev之前和远程仓库同步过,这次要删除前如果有修改需要先同步才能修改,不然需要用-D

       10.2. 两个分支都修改了合并冲突问题

      解决冲突

      10.3. 合并分支

    分支管理策略
    #
    git merge 默认使用Fast Forward快速合并,这种不会留下合并信息 # git merge --no-ff -m "sometext" 由于不采用快速合并,会生成一次commit,所以需要-m 说明,这个好处可以查到合并信息

      10.4. 本地分支与远程分支 

    1. 本地分支如果和远程分支同名,push时只要写一个分支名即可
    2. 如果不同名,可以使用"git push -u origin local_branch_name:romote_branch_name"

    11. 保存现场stash

    # 背景设定
    # 假如我们当前正在dev分支工作,但是master主分支有bug需要紧急修复,但是dev的工作才进行到一半,完成还需要一天,我们想在不提交的情况下,把bug修复好,改怎么做?
    
    #这时候就可以用git stash,保存
    #然后切换到master修复bug,修复完成后再切换到dev
    #使用"git stash list"查看保存的list
    #那就使用命令"git stash pop"(如果list中有多个stash,可以使用git stash apply stash@{1})
    #"git stash pop"(在恢复的时候,同时把stash内容也删了)=="git stash apply"(恢复)+"git stash drop"(删除stash内容)

      

    12. vi的使用

    1. 进入vi模式后,先按I,切换成插入模式
    2. 修改文本内容
    3. 按Esc,退出插入模式
    4. 键盘敲":x",保存并退出

      

    13. 标签

    标签的意义
    1. 标签的作用相当于commit ID
    2. 区别在于commit ID是机器生成的,不便于记忆和可读性,tag是人为设定的,有特殊意义,有很强的可读性
    
    如何打标签
    首先切换到你要打标签的分支上,通常是master
    $ git tag v1.0  #给当前分支打上v1.0的标签
    $ git tag v1.0 6a5819e #如应该在之前版本打的标签没打,可以这样补打
    -------------------------------------------------------------------------------
    $ git tag  #显示当前分支的所有标签
    $ git show v1.0 #查看v1.0的信息:commit ID,Author,Date
    --------------------------------------------------------------------------------
    $ git tag -a v1.1 -m "version 1.1 released" 3628164 
    # -m 添加说明文字,-a v0.1:使用git show v1.1,有tag的信息
    
    
    标签不自动push到远程
    若要push,可以使用命令
    $ git push origin v1.0  #推送单个tag
    $ git push origin --tags  #一次性推送所有tag
    
    
    删除标签
    1. 本地删除
    $ git tag -d v1.0  #删除标签v1.0
    2. 远程删除(如果已经推送到远程,要先本地删除,再远程删除两个步骤)
    $ git push origin :refs/tags/v1.0
    
    #要查看是否远程删除了,可以上GitHub上看

    14. GitHub代码更新合并到本地

    $ git merge origin/master

    15. 创建SSHkeys

    $ ssh-keygen -t rsa -C "youremail@example.com"

    一路回车然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码

    然后就会生成id_rsaid_rsa.pub 两个文件

    其中id_rsa是私钥,不能泄露

    id_rsa.pub是公钥,可以放心告诉别人,而我们也只需要这个公钥,来连接我们GitHub。

    创建完成后,使用如下命令查找位置

    $ find / -name id_rsa.pub
  • 相关阅读:
    名信片定做网站
    [置顶] 数据库开发常识
    <IMG>中UserMap的用法
    阿斯钢iojeg9uhweu9erhpu9hyw49
    慎得慌二u赫然共和任务i个屁
    阿斯钢iojeg9uhw8uhy平
    2014校园招聘笔、面经历总结---华为双选会
    PDCA模型的学习
    阿斯钢 弇7人后偶尔一个味5而已
    【HTML】让<pre>标签文本自动换行
  • 原文地址:https://www.cnblogs.com/wongbingming/p/6931300.html
Copyright © 2020-2023  润新知