美文网首页
最牛X的Git

最牛X的Git

作者: lmfei | 来源:发表于2019-08-15 18:24 被阅读0次

    Git相关概念: 

    Git是目前世界上最先进的分布式版本控制系统!!!

    开发语言:C

    Git是分布式版本控制系统:分布式版本控制系统,每个人都是一个完整的版本库

    SVN是集中式版本控制系统:集中式版本控制系统,版本库集中放在中央服务器

    工作区和暂存区:

    工作区就是我们项目下面新建的那个空文件夹,然后我们会通过git init生成Git的版本库,Git版本库里存了很多内容,其中最重要的就是暂存区(stage),还有Git为我们自动创建第一个分支master,以及指向master的一个指针HEAD


    Git在Mac OS X上的安装:

    1.通过homebrew,然后通过homebrew安装Git

    2.通过下载Xcode,Xcode集成了Git

    安装成功后,设置用户名和Email地址

    git config --global user.name "username"

    git config --global user.email "email@example.com"


    本地Git库的建立:

    一创建空目录

    mkdir xxx  --新建文件

    cd xxx

    pwd --显示当前目录

    二将目录变成Git可以管理的仓库

    git init

    1.添加文件,需要两步 

        git add xxx

        git commit -m "提交描述”

    2.查看当前仓库的状态,查看哪些文件有改动

        git status

    3.查看改动文件的具体改动内容

        git diff xxx  比较的是工作区与暂存区的区别

        git diff --cached xxx 比较的是暂存区与Git版本库的区别

        git diff HEAD -- xxx 比较的是工作区与Git版本库的区别

    4.提交改动内容,与提交新文件命令相同,见1

    5.历史记录的查看

        git log  日志过多时,使用enter向下看 q退出

        嫌输出日志太多:git log --pretty=oneline

    6.版本回退

        回退到上一个版本: git reset --hard HEAD^

        回退到上上个版本: git reset --hard HEAD^^

        回退到往上100个版本: git reset --hard HEAD~100

        回退到指定Commit id的版本: git reset --hard id前几位

    7.查看每次提交的Commit id

        git reflog

    8.撤销修改

    工作区的修改撤销有两种情况

               一种是修改没有提到暂存区,则撤销回版本库的状态;

               另一种是修改已经被提交到了暂存区,则撤销回暂存区的状态

                git checkout — xxx    

    将暂存区的内容回退到版本库的状态

                git reset HEAD xxx

    9.文件通过文件管理器或者rm指令被删除

    真的需要删除,则使用指令将git rm xxx 并git commit -m 删除版本库的文件

    如果误删,则使用git checkout — xxx恢复文件


    使用GitHub作为远程仓库

    1.申请github账号

    2.创建SSH Key  在用户主目录,看看有没有.ssh目录,如果有,再看看这个目录下吗有没有id_rsa和id_rsa.pub这两个文件

    如果没有,创建SSH Key:

    ssh-keygen -t rsa -C"email.com"

    3.登录github,打开Account setting, SSH Keys页面:然后,点击Add SSH Key,填上任意Title,在Key文本框里粘贴id_rsa.pub里的内容

    添加远程库

    1.在github上点击Create a new repo创建一个新的仓库

    2.关联本地库

    git remote add origin git@github.com:github-name/learngit.git

    3.本地库内容推送到远程库

    git push -u origin master

    4.本地做了修改,通过命令远程提交

    git push origin master

    注:push和pull的时候每次都要输入密码 原因及解决方法:

    原因:更新到 10.12.3 后,每次使用 ssh 时都需要输入私钥的密码, ssh-agent 并没有自动解锁私钥

    解决方法:ssh-add /Users/xxx/.ssh/id_ras //PS:每次重启都需要进行一次

    从远程库克隆

    git clone git@github.com:github-name/learngit.git

    11.创建与合并分支

    git checkout -b dev(分支名)  创建并切换分支 

    等价于

    git branch dev         创建分支

    git checkout dev     切换分支

    git merge dev      合并指定分支到当前分支

    git branch -d dev  删除分支

    git branch -D dev1     强行删除未合并的分支

    git branch 查看分支  *指向当前分支

    git log —graph —pretty=oneline —abbrev-commit    查看分支的合并情况

    git merge —no-ff -m '分支合并’ dev  —no-ff表示禁用Fast forward

    12.多人协作

    git remote -v 查看远程库信息

    git push origin branch-name 推送失败,先用git pull抓取远程的新提交,如果git pull提示no tracking information,则说明本地分支与远程分支的链接关系没有建立;通过该指令可以将本地已有分支创建远程的分支

    git checkout -b branch-name origin/branch-name 本地创建和远程分支(远程分支已存在)对应,名称最好一致

    git branch —set-upstream-to branch-name origin/branch-name|git branch —set-upstream-to=origin/branch-name branch-name 建立本地分支和远程分支的关联

    创建远程没有的分支,并进行关联

        git checkout -b branch-name 创建本地分支

        git push origin branch-name 提交本地创建分支

    本地创建分支(远程分支已存在),再与远程关联

        git checkout -b branch-name

        git branch —set-upstream-to=origin/branch-name branch-name

        git pull

    本地创建git库与远程进行关联 如果远程库有文件,需要在关联后首次git pull时 进行额外处理

        git remote add origin git@github.com:/github-name/LearnGit.git

        git pull origin master —allow-unrelated-histories

    13.标签管理

    git tag  v1.0  打一个新标签

    git tag     查看标签    

    git tag v1.0 commit-id  指定commit-id打标签

    git tag -a tag-name -m tag-description  commit-id  通过指定commit-id指定标签名并添加描述打标签

    git show v1.0    查看标签具体信息

    git tag -d v1.0  删除本地标签

    git push origin v1.0 推送某个标签到远程

    删除远程标签

    git tag -d v1.0 先删除本地标签

    git push origin :refs/tags/v1.0 再删除远程标签

    14.自定义Git

    忽略特殊文件,在工作区的根目录添加.gitignore

        git add xxx报错 — The following paths are ignore by one of your .gitignore files

        可以通过git add -f xxx     强制添加到Git

        git check-ignore -v xxx 命令检查看是不是哪个规则写的有问题

    配置别名

        git config —global alias.ci commit  为commit设置别名ci

        git ci -m 'haha'  <=> git commit -m 'haha'

    参考资料:https://www.liaoxuefeng.com/wiki/896043488029600

    相关文章

      网友评论

          本文标题:最牛X的Git

          本文链接:https://www.haomeiwen.com/subject/uemfrctx.html