• Git学习总结


    相关学习链接:

    Git官网:https://git-scm.com/

    廖雪峰的官方网站Git总结

    Git和GitHub的关系?

    Git是一个分布式的版本控制系统。

    GitHub是一个基于Git做版本控制的代码托管平台。类似的还有BitBucket

    需要下载 Git for windows 软件,在官网下载,速度特别慢,

    MINGW32 / MINGW64

    提示: 可以考虑去这个网站下载,速度很快。 gitb.org


    在介绍命令前,需要了解点其他的几个常用命令:

    cd "<path>"  直接进入到这个路径,git中 Shift + Ins 可以复制(复制的快捷键)

    cd ..  退回上一层路径

    pwd  打印出当前工作路径

    cd ~  进入到用户的路径

    ls   罗列出当前路径下的文件

    ls -ah  罗列出当前路径下的文件,包括隐藏文件

    cat <file>  显示该文件内容

    比较重要的命令:有三种方式可以找到Git的帮助手册

    $ git help <verb>
    $ git <verb> --help
    $ man git-<verb>

    例如:获取config命令的手册

    git help config

    常用命令:

    git init  初始化git仓库。先进入到要初始化的仓库的文件夹,再执行此命令

    git add <file>  添加文件到版本库。注意,可反复多次使用,添加多个文件(用空格相隔

    git commit -m "comments"  提交文件到仓库。双引号中,写提交说明,即log

    git status  查看当前仓库状态,是否有修改等

    git diff <file>  查看该文件difference

    git log  查看提交记录,显示log,从最今到最远

    git log --pretty=oneline  加上该参数,简化log,每次提交只显示一行。 前面一串是 commit id(版本号) ,SHA1计算出来

    git reset --hard <commit_id>  回退到某个版本

      首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

    git reflog  用来记录每一次命令,查看命令历史,用于确定要回到未来的哪一个版本

    git diff HEAD -- <file>  命令可以查看工作区和版本库里面最新版本的区别

    git checkout  其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

    git checkout -- <file>  当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时

    git reset HEAD <file>  当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,先用此命令,然后再用上面的命令。

    rm <file>  直接把文件删除掉

    git rm <file>  确实要从版本库中删除该文件,也可以删除文件夹

    git rm -r <folder/>  此处-r表示递归所有子目录,如果你要删除的是空的文件夹,可以不同加-r

    远程仓库:

    创建SSH Key

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

      如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

    为什么GitHub需要SSH Key呢?

      因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key

    git remote add origin <remote git repository url>  将本地仓库与远程仓库关联

      添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库

    git push -u origin master

      把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

      由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    git push origin master

      把本地master分支的最新修改推送至远程仓库

    git clone <remote git repository url> <自定义本地仓库的名字,这里可以省略不写>

      克隆一个远程仓库

    git remote  列出所有远程主机

    git remote -v  查看git远程控制,可以查看远程主机的网址

    git remote remove origin  删除和远程的关联

    git config --get remote.origin.url  查看远程仓库地址

    git config -l  查看当前git环境详细配置

    git config --list  和上面的是一样的效果。

    git config <key>  检查Git的某一项设置。使用上面查出来的key。

    git config --system --list  查看系统配置

    git config --global --list  查看当前用户global配置

    git branch -a  列出所有分支的详细信息,包括远程分支,用红色标注

    git branch <branchName>  新建分支

    git checkout <branchName>  切换到该分支,并开始开发

    git checkout -b <branchName>  新建一个分支,并同时切换到那个分支(是上面两条语句的简写

    git branch -D <branchName>  删除本地分支

    之前也使用过Source Tree,它上面有一个功能,叫做git flow,点完后,可以新建一个Hotfix分支,  如 Hotfix/issueNo

    这个和使用命令行创建是一样的效果: git checkout -b Hotfix/issueNo

    git pull 操作就可以从远程库中获取某个分支的更新,再与本地指定的分支进行自动merge(即使本地不存在这个分支)
      git pull <远程库名> <远程分支名>:<本地分支名>

    如果是要与本地当前分支merge,则冒号后面的<本地分支名>可以不写
      git pull <远程库名> <远程分支名>

    推送本地分支到远程仓库
      git push --set-upstream origin <本地分支名>

    从远程仓库里拉取一条本地不存在的分支
      git checkout -b <本地分支名> origin/<远程分支名>

      如果出现提示:
      fatal: Cannot update paths and switch to branch 'dev2' at the same time.
      Did you intend to checkout 'origin/dev2' which can not be resolved as commit?
      表示拉取不成功。上面的我需要先执行
      git fetch
      然后再执行
      git checkout -b <本地分支名> origin/<远程分支名>

    直接 git pull origin <远程分支名>:<本地分支名>  一个命令可以达到同等效果

  • 相关阅读:
    软件构架实践_阅读笔记04(-11)
    软件构架实践_阅读笔记03(7-9)
    Tsinsen-A1488 : 魔法波【高斯消元+异或方程组】
    Tsinsen-1487:分配游戏【树状数组】
    Tsinsen-1486:树【Trie树 + 点分治】
    Splay初步【bzoj1503】
    Treap初步
    [BZOJ3207] 花神的嘲讽计划Ⅰ
    可持久化Trie树初步
    可持久化线段树初步
  • 原文地址:https://www.cnblogs.com/FocusIN/p/6809993.html
Copyright © 2020-2023  润新知