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

    感谢:廖老师的博客教程

  • 相关阅读:
    1、编写一个简单的C++程序
    96. Unique Binary Search Trees
    python 操作redis
    json.loads的一个很有意思的现象
    No changes detected
    leetcode 127 wordladder
    django uwsgi websocket踩坑
    you need to build uWSGI with SSL support to use the websocket handshake api function !!!
    pyinstaller 出现str error
    数据库的读现象
  • 原文地址:https://www.cnblogs.com/zhengbin/p/5170228.html
Copyright © 2011-2022 走看看