美文网首页
git学习记录

git学习记录

作者: 胖太_91bf | 来源:发表于2018-04-05 20:29 被阅读0次
    • git init
      创建git仓库
    • git add
      添加文件到仓库
    • git commit -m "xxx"
      提交文件到仓库
    • git status查看仓库当前状态
    $ git status
    # On branch master
    # Changes not staged for commit:
    #   (use "git add <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #    modified:   readme.txt
    #
    no changes added to commit (use "git add" and/or "git commit -a")
    

    上边的命令说: reademe别修改过还没commit

    • git diff
      查看上次修改
    • git log
    $ git log --pretty=oneline
    
    

    查看版本历史记录

    • 版本回退
      Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
      使用git reset命令
     git reset --hard HEAD^
    HEAD is now at ea34578 add distributed
    // 还可以通过reset 版本号的方式去写, 版本号不一定要输全git会自己搜索
    $ git reset --hard ea34578
    
    • git reflog: 用来记录你的每一次命令
    • 工作区(Working Directory)和版本库(Repository)和暂存区(stage)
      git add命令:


      0.jpeg

      git commit命令:


      image
    • 撤销修改
    1. git add 之前撤销修改
    $ git checkout -- <file>
    
    1. git add之后撤销修改
    1. 撤销暂存区修改 
    git reset HEAD <file>
    2. 撤销工作区修改
    $ git checkout -- <file>
    
    • 删除文件
      添加一个文件
    $ git add test.txt
    $ git commit -m "添加一个文件"
    

    删除工作区的文件

    $ rm test.txt
    

    删除git里的文件

    $ git rm test.txt
    $ git commit -m "删除一个文件"
    

    本地删错了, 可以恢复

    $ git checkout -- <file>
    
    • 添加远程仓库
    1. 链接远程库
    $ git remote add origin <git地址>
    
    1. 本地库推送到远程库(第一次提交加参数 -u)
    $ git push -u origin master
    
    1. 以后提交到master
     $ git push origin master
    
    • 从远程库克隆
      现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆
    1. 在github上常见新的仓库
    2. 使用git clone克隆一下代码
    git clone <giturl>
    
    • 创建和合并分支
    1. 创建dev分并切换到dev分支
    $ git checkout -b dev
    Switched to a new branch 'dev'
    

    git checkout -b相当于:

    $ git branch dev
    $ git checkout dev
    

    产看当前分支

    $ git branch
    * dev
      master
    
    1. 修改工作区文件并提交
    $ git add -A
    $ git commit -m "new branch dev"
    
    1. 切换到maser, 并查看dev中修改的文件, 发现不见了
    $ git checkout master
    
    1. 把dev分支的代码合并到master上
    $ git merge dev
    

    删除dev分支

    $ git branch -d dev
    

    创建与合并分支

    • 解决分支冲突
    1. 创建新分支feature1
    git checkout -b feature1
    
    1. 更改文件
    $ git add -A
    $ git commit -m "feature1"
    

    3 . 切回master, 修改文件并提交

    $ git checkout master
    $ git add -A
    $ git commit -m "feature"
    
    1. 合并feature1 分支 发生冲突, 手动更改
    git merge feature1
    // 冲突
    <<<<<<< HEAD
    Creating a new branch is quick & simple.
    =======
    Creating a new branch is quick AND simple.
    >>>>>>> feature1
    
    1. 修改后, 重新提交
    $ git add -A 
    $ git commit -m "xxx"
    

    6 使用git log产看合并情况

    $ git log --graph --pretty=oneline --abbrev-commit
    
    1. 删除feature1分支
    $ git branch -d feature1
    
    • 分支管理策略
      分支合并是fast forward模式会丢掉分支信息, 通常会--no-ff方式git merge
    1. 创建并切换分支dev, 并修改文件,
    $ git checkout -b dev
    
    1. 切回master
    $ git checkout master
    
    1. 用--no-ff方式git merge
    $ git merge --no-ff -m "dev merge no-ff" dev
    
    1. git log 查看分支合并情况
    $ git log --graph --pretty=oneline --abbrev=commit
    

    分支管理策略总结:

    1. master分支仅用于发布新版本, 不可以写代码
    2. 代码写在dev分支写代码, 每个人在dev分支上创建自己的分支, 需要的时候往dev上合并, 发布版本的时候,将dev合并到master上
      image
      合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
    • bug分支
      `. 在dev分支工作区未提交, 可以先用git stash储存工作现场
    $ git stash
    
    1. 在切换到master, 并创建bug分支 issue-101, 然后修复bug后合并
    $ git checkout master
    $ git checkout -b issue-101
    $ git add -A
    $ git commit -m "修复bug"
    $ git checkout master
    $ git merge --no-ff -m "修复bug" issue-101
    
    1. 切换到dev分支, 找回工作现场 -> 还原现场并删除stash记录
    $ git checkout dev
    $ git stash list // 产看保存的工作现场列表
    stash@{0}: WIP on dev: 6224937 add merge
    1. $ git stash apply stash@{0} 不删除记录, 需要 $ git stash drop
    2. $ git stash pop stash@{0} 还原并删除
    

    相关文章

      网友评论

          本文标题:git学习记录

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