美文网首页
git学习笔记

git学习笔记

作者: jacklin1992 | 来源:发表于2016-09-02 15:27 被阅读33次

    GIT学习笔记

    1、git 安装 以及初始配置

    • 安装
      sodu apt-get install git
    • 配置
      $ git config --global user.name "jacklin"
      $ git config --global user.email 361525737@qq.com

    2、创建版本库

    • 创建版本库(仓库)文件

        mkdir jacklingit  //创建git文件夹
        cd jacklingit    // 打开
        pwd              // 查看当前目录
      
    • 通过 git init 命令把这个目录编程可以管理的仓库

      $ git init
      Initialized empty Git repository in /Users/michael/learngit/.git/
      

      这个时候当前目录多了一个.git的文件,这个目录是Git来跟踪管理版本库的,不能手动修改。

    • 现在编写一个test.txt的文件放到jacklingit目录下,并通过git.add告诉git,把文件添加到仓库,然后通过git commit命令告诉git 把文件提交到仓库。

      $ git add test.txt
      $ git commit -m "wrote a test file"
      

      这里的 commit -m 中 -m后面跟的是说明性质文字,可以是任意内容,但最好是有意义的。为什么需要add和commit 两步?因为 一次性可以commit多个文件,可以多次添加,一次提交。

    3、修改记录

    假如现在对test.txt进行部分修改

    • 用git status查看修改状态,用 git diff 来查看具体做了哪些改动

      $git status
      $git diff
      

    看到具体改动之后我们才可以放心提交

    • 想开始一样,用 git add 和 git commit 添加和提交

    4、版本回退

    • git log 命令显示由近到远的版本日志,包括时间、日期、作者等,如果想查看精简版本 可以使用 git log --pretty=oneline 命令

      $git log
      $git log --pretty=oneline
      
    • 假如这个文件提交过100次,那就有100个版本,使用git reset命令退回到指定版本

      $ git reset --hard HEAD^      //退回到上一个版本
      $ git reset --hard HEAD^^     //退回到倒数第二个版本
      $ git reset --hard HEAD~50    //退回到往前数50个版本
      

      然后通过 cat test.txt来查看当先版本是否时候操作后的版本

    • 这个时候通过 git log命令来查看版本日志,发现版本记录也彻底回到了原来50版本对应的日志,那么如何再退回到没有进行版本退回之前的最新版本?假如操作窗口还没有关闭,往上找到最新版本的版本号,假如是00000,执行 git reset --hard 00000
      $ git reset --hard 00000

    • 假如连commit id 也找不到怎么办? git reflog 命令可以查看你的每一次命令,然后知道commit id 就OK了

    head 是git 的版本指针,设定哪里,版本指针就会指向哪里,所以恢复速度很快

    5、工作区和暂存区

    • 工作区就是我们文件存放的区域,比如前面创建的jacklingit这个文件夹
    • 被我们创建的版本库文件里面都会有一个.gitd的文件(隐藏目录),这是git的版本库,版本库里面成怒了很多东西,其中最重要的就是暂存区(stage).
    • git为我们自动创建了一个分支master以及指向master的指针HEAD.
    • 文件提交的两步 git add就是把文件添加到暂存区,git commit就是把暂存区的文件提交到当前分支。

    6、管理修改

    • git管理的不是文件,而是修改。
    • 当你没有将修改add到暂存区的话,commit是无效的。

    git diff HEAD --test.txt //查看文件的修改

    7、撤销修改

    • 当你该乱了工作区某个文件的内容,想直接丢弃工作区的修改

      $ git checkout --test.txt
      
    • 当你不但该乱了而且add到了暂存区

      $ git reset HEAD test.txt
      $ git checkout --test.txt
      
    • 当你不但放到了暂存区而且commit了,那就退回到上一个版本

      $ git reset  HEAD^
      

    8、删除文件

    • 删除文件

      $ rm test.txt    
      
    • 这时工作区和暂存区的文件内容就不一致了,如果你要一并删除暂存区的对应文件,并且提交
      $ git rm test.txt
      $ git commit -m "remove test.txt"

    • 另一种情况时候误删,就用checkout恢复
      $ git checkout -- test.txt

    文件一旦提交到版本库,就永远不用担心误删,但时候要小心,最后一次修改的内容会丢失。

    9、远程仓库

    • 远程仓库的建立
      $ ssh-keygen -t rsa -C "361525737@qq.com"
      在用户目录输入命令之后一路回车,这时候有个.ssh的文件(可能是隐藏的),打开后里面有三个文件,其中一个是id_rsa.pub,打开然后复制里面的内容到github的SSH key中。
    • 在github中建立与本地版本库同名的repository,就成功地创建了一个新的Git仓库
    • 输入命令使本地版本库和远程库连通
      git remote add origin git@github.com:361525737@qq.com/jacklin.git
    • 下一步,就可以把本地库的所有内容推送到远程库上:
      $ git push -u origin master
      由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

    10、从远程库克隆

    • 登录github建立一个新的仓库 名字叫gitskills,勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个README.md文件。创建完毕后,可以看到README.md文件

    • 然后克隆一个本地库
      git clone git@github.com:Jacklin1992/gitskill.git

      如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。

      11、创建与合并分支

      查看分支:git branch
      
      创建分支:git branch <name>
      
      切换分支:git checkout <name>
      
      创建+切换分支:git checkout -b <name>
      
      合并某分支到当前分支:git merge <name>
      
      删除分支:git branch -d <name>
      

    12、合并冲突

    • 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    • 用git log --graph命令可以看到分支合并图。

    13、分支管理策略

    • master分支是稳定分支,只用来发布新版本,不能再上面操作,工作配合都是在dev上完成,每个人将自己的分支不时的合并到dev上即可。

    14、BUG处理

    • 当修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
    • 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
      $ git stash
      $ git stash pop

    15、feature分支

    • 开发一个新feature,最好新建一个分支
    • 如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

    16、多人协作

    • 查看远程库信息
      $git remote -v
    • 本地新建的分支如果不推送到远程,对其他人就是不可见的
    • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交
      $git push origin branch-name
      $git pull
    • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致
      $git checkout -b branch-name origin/branch-name
    • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
      $git branch --set-upstream branch-name origin/branch-name
    • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突
      git pull

    参考资料
    阮一峰

    相关文章

      网友评论

          本文标题:git学习笔记

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