zoukankan      html  css  js  c++  java
  • 初识Git

    本文只是一个个人学习Git的笔记,如有错误的地方,还望指出,谢谢!参考资料如下:

      《Git教程--廖雪峰的官方网站

       bootstrap里面的--git_guide

    Git安装

      在网上搜索git下载安装即可。成功后,右击会出现Git Bash,说明安装成功了。

    Git配置

      Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置。

    1、置Git的user name和email:        

    $ git config --global user.name "Your Name"
    $ git config --global user.email "email@example.com"

    2、生成SSH密钥

      1)、查看是否已经有了ssh密钥:cd ~/.ssh
          如果没有密钥则不会有此文件夹,有则备份删除
      2)、生存密钥:      

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

      按3个回车,密码为空。

      最后得到了两个文件:id_rsa和id_rsa.pub。  

    3、在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥。

      打开https://github.com/ ,登陆,然后添加ssh。

    Git上传代码

      使用git,要会使用git status 查看提交状态,遇到问题,都会给出命令提示,然后根据提示,完成所需要的操作。>_>

       

    1、提交完整流程

      先与git上仓库进行一个绑定    git  remote  add  origin git仓库

       git  add  <file>            添加需要上传的文件<file>(可重复使用该命令添加多个文件)    //告诉Git,把文件添加到暂存区
       或者 git  add  -A            添加所有代码

       添加成功的话,没有任何显示

       git  commit  -m  "commit"     把暂存区的所有内容提交到当前分支                //告诉Git,把文件提交到本地版本库

       git  push  origin  master(第一次提交时,使用git  push  -u  origin  master)     推送已经和远程版本库内容合并的本地版本库至远程库

    2、工作区有内容修改(工作未完成)的时候,需要对master分支修改bug,或者拉取远程仓代码

      git  stash        将所有工作区的内容暂存

      git  pull           以远程库的内容为基准  将其内容拉至本地版本库 

      取出暂存的内容    

      git  stash  list                查看暂存的内容       

      1)git  stash  pop            将暂存的文件取出来,同时将暂存区内容删除

      2)git stash apply  stash@{n}   恢复后,stash内容并不删除,你需要用git stash drop来删除;          

    3、代码撤销

      1)、代码没有放入暂存区

        git  checkout  --  <file>    撤销对<file>文件的修改

      2)、添加到暂存区后,又作了修改;撤销修改就回到添加到暂存区后的状态。

        git reset HEAD <file>   可以把暂存区的修改撤销掉(unstage),重新放回工作区

    4、代码冲突(没测出来,莫名奇妙的解决了)

      有时候你提交的时候,他人在你之前对这个文件做过了修改并提交到Git,那么你提交的时候会出现代码冲突。

      Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们修改后保存。然后“重复1”的内容

    5、版本回退      

      当有一天,客户对你提出了一大堆的需求,你辛辛苦苦的完成了客户的需求,却又被告之他现在想要最初的版本,相信每个人都会是崩溃的;又或者你将代码提交到远程库的时候,后悔了。别担心,Git可以实现版本回退。

        git  log 或者 git log --pretty=oneline     查看提交日志

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

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

        git  reset  --hard  HEAD~n        回到上n个版本

      版本回退-逆转未来

      当你回到前面的版本后,再想回到“未来”。

        git  reflog              记录你的每一次命令                        

        git  reset  --hard commit_id    回到commit_id这个版本

      回退某一个文件

        git  reset  commit_id  <file>       仅将<file>回退到commit_id版本(本地文件没有修改,直接回退)

    6、master|REBASE m/n

      出现标题这样的情况时,先将代码提交到远程版本库。

        git  rebase  --abort    回到主分支master上,此时会提醒你主干会落后1commits

        git  pull         将远程拉回本地

    7、其他部分命令

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

      git reset      命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

    8、忽视文件 .gitignore

      有时候,你必须把某些不想提交的文件也放到Git工作目录中,那么如何提交时忽视他们呢?只需在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

      

    # 以'#'开始的行,被视为注释.                                                                                                                          
    # 忽略掉所有文件名是 foo.txt的文件.
    foo.txt
    # 忽略所有生成的 html文件,
    *.html
    # foo.html是手工维护的,所以例外.
    !foo.html
    # 忽略所有.o和 .a文件.
    *.[oa]
    #只忽略dbg文件,不忽略dbg目录
    dbg
    !dbg/

      规则写法:斜杠“/”开头表示目录;

           星号“*”通配多个字符;

           问号“?”通配单个字符;

           方括号“[]”包含单个字符的匹配列表;

           叹号“!”表示不忽略(跟踪)匹配到的文件或目录

     注意:
    不要误解了 .gitignore 文件的用途,该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。如果文件曾经被 Git 记录过,那么.gitignore 就对它们完全无效。

    9、本地库绑定新的 git 仓库

    如果有一天,由于某些原因,比如远程仓空间不够等情况,你需要把本地文件传入一个新的 git 远程仓库,但此时你的本地仓库已经绑定过一个远程仓库了,此时可以用以下命令,来绑定新的仓库

        git  remote  -v              查看绑定的仓库信息

        git  remote  remove  origin         与此时绑定的远程仓库解绑

        git  remote  add  origin 新的仓库       绑定新的远程仓库

        git  remote  -v              查看绑定的仓库信息,确定是否已绑定新的仓库  

    常用的git学习与命令使用,多看廖雪峰的官方网站--Git教程就可以了,剩下的就是工作和平时的多敲,碰到问题再多找资料就行了。

          

  • 相关阅读:
    xtrabackup之Innobackupex全备数据库
    没有Where条件下group by走索引
    Oracle中查看无效的对象、约束、触发器和索引
    udev/raw/asmlib/多路径 配置asm
    自适应游标共享技术02(一个简单的例子来走近ACS)
    自适应游标共享技术03(常用分析脚本)
    监控进程是否存在
    MySQL运行状态show status详解
    MySQL 加锁处理分析
    使用RMAN验证备份的有效性
  • 原文地址:https://www.cnblogs.com/intangible/p/6565187.html
Copyright © 2011-2022 走看看