zoukankan      html  css  js  c++  java
  • Git 学习总结

    神奇的 Git--https://github.com/Gitzhengbin(坑*的gitHub,突然就登不上去了,帐号密码错误,邮箱找不到,真坑)

    害的又申请了一个:https://github.com/zhengbingit

    基本配置:

      1.本地仓库管理者用户名与 Email,用于版本备注,与生成 SSH key
        git config --global user.name "Your Name"
        git config --global user.email "email@example.com"
      2.创建版本库 ->git init
          把当前目录编程 Git 可以管理的仓库
          (mkdir abc)创建名为 abc 的文件夹
          (rm -rf abc)删除名为 abc 的文件夹
          -r 就是向下递归,不管有多少级目录,一并删除
          -f 就是直接强行删除,不作任何提示的意思
          (pwd)查看当前所在路径
          (ls -ah)查看文件夹所有文件,包括隐藏域

    基本操作:

      查看仓库当前状态->git status
      查看仓库当前做了哪些修改->git diff
        查看工作区与版本库里面最新版本的区别->git diff HEAD -- readme.txt

      查看命令历史->git reflog
      查看提交历史->git log
        信息简略版->git log --pretty=oneline

      将文件向Git版本库中更新->
        1.git add 把文件修改添加到暂存区
        2.git commit 提交更改,把暂存区的所有内容提交到当前分支
        注意:
          要注意工作区与暂存区的概念
          * 第一次修改 -> git add -> 第二次修改 ->git commit
          Git管理的是修改,当用 git add 命令后,在工作区的第一次修改被放入暂存区中,等待被提交(commit),但是,第二次的修改并没有放入暂存区中(也就 是没有执行 git add 命令),所以,git commit 只负责把暂存区的修改提交,也就是说仅提交了第一次的修改,而第二次的修改并没有提交

    版本回退:

      回到之前版本->git reset --hard HEAD^
      回到指定版本->git reset --hard commit_id

      本地仓库的版本回退后,-> git push -f,来强制覆盖掉远程仓库

    远程仓库:

      从GitHub克隆一个仓库到本地Git
        ->git clone git@github.com:Gitzhengbin/gitskills.git
      把本地Git仓库与GitHub中的Git仓库进行远程同步
        1.在GitHub中创建新仓库,以仓库名为 learngit 为例
        2.->git remote add origin git@github.com:Gitzhengbin/learngit.git
          这一步算是添加一个origin(远程库)
        3.->git push -u origin master
          这一步算是将origin,推送到远程(GitHub)
          也就是把当前分支master推送到远程
          由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master 分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
               以后若再向这个仓库更新,则用->git push origin master 即可

      删除远程 branch(分支)、tag(标签,对某一时间点上的版本打上标签)

    git push origin --delete tag <tagName>
    git push origin --delete branch <branchName>

      删除远程仓库中文件:

    git rm -r --cached target/    //删除远程仓库中的target文件夹中所有内容
    git commit -m "删除远程仓库多余文件"
    git push

    本地同步远程仓库

      更新当前分支

        ->git pull

      从远程(origin)获取最新版本并merge(合并)到本地

        ->git pull origin master

      获取服务器端的改动,比如其他用户新建了一个分支并push到了服务器,运行这个命令之后会得到这个分支的信息

        ->git fetch

      从远程获取最新版本到本地,不会自动merge(合并)

        ->git fetch origin master

    分支管理:

      创建分支并切换到分支'dev'
        ->git checkout -b dev
        等价于
          ->git branch dev
           +git checkout dev
      查看当前所有分支
        ->git branch
      (* 代表当前所在分支)
      删除分支
        ->git branch -d dev
      合并分支dev到当前master的版本
        ->git merge dev
      切换分支(dev)与主线(mester)
        ->git checkout [dev/master]
      查看分支合并图
        ->git log --graph

    遇到的问题:

      问题1:fatal: remote origin already exists.

      解决:git remote rm origin

      问题2:error: failed to push some refs to 'git@github.com:Gitzhengbin/mxbc.git'

      解决:由于向远程仓库提交的本地代码,与远程仓库的代码不一致(远程仓库比本地仓库多,比如远程仓库多一个 README.md,遇到这个问题就由我在远程添加这个文件造成的)

         所以首先将远程仓库与本地仓库进行合并后,再进行推送

         git pull --rebase origin master(注:pull=fetch+merge) 

    ------------16.10.25更新------------

      问题3:fatal: Authentication failed for 'http://********.git/'

      解决:

    git config --global user.name "***"
    git config --global user.email "***@***.com"

       并按提示输入 git 仓库的密码。

    ------------17.03.25更新------------

      问题4:push 时需要输入账户名和密码

      原因:原因是添加远程仓库的时候使用了 https 的方式,所以每次都使用 https 的方式 push 到远程库。

      解决:

    首先确定当前使用的传输协议是否为 https:

    git remote -v

    如果如下所示:

    origin    https://github.com/***/chapter1 (fetch)
    origin    https://github.com/***/chapter1 (push)

    那么就说明当前的传输协议为 https,下面命令将其修改为 ssh 的方式:

    git remote rm origin 
    git remote add origin git@github.com:***/chapter1.git
    git push -u origin master

     ------------17.07.03更新------------

      修改前一次 commit 的备注内容

    git commit --amend

      删除还没有 add 的文件

    git clean -df、-n

    感谢:廖老师的博客教程

  • 相关阅读:
    Network in Network
    cord-in-a-box 2.0 安装指南
    L2 约束的最小二乘学习法
    点估计
    递归简介
    向量的L2范数求导
    优雅的线性代数系列三
    ansible批量部署nginx
    ansible批量部署mysql
    ansible批量部署tomcat
  • 原文地址:https://www.cnblogs.com/zhengbin/p/5170228.html
Copyright © 2011-2022 走看看