美文网首页
2020-01-08

2020-01-08

作者: 叫我颜先生 | 来源:发表于2020-01-15 14:39 被阅读0次

https://www.liaoxuefeng.com/wiki/896043488029600/896827951938304

简介

Git使用C开发,分布式

命令

  • git init:初始化

  • git add <file>:添加文件到仓库,实际上是将文件修改添加到.git的暂存区

  • git commit -m <message>:提交文件,实际上是将暂存区的所有内容提交到当前分支

  • git status:查看工作区状态

  • git diff:查看修改内容

    <文件修改后,status输出“Changes not staged for commit:”>

    <文件add后,status输出“Changes to be committed:”>

    <文件commit后,status输出“nothing to commit, working tree clean”>

  • git log:查看历史记录

  • git reflog:查看历史命令,方便查看commit id,回到未来的版本

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

  • git reset --hard HEAD~100:回退到100个版本之前

  • git reset --hard <commit id>:回退到具体版本

  • git checkout -- <file>:丢弃工作区修改,意思是工作区的文件回到最后一次add或者commit的状态(修改的东西还没add到缓存区时使用)(其实是用版本库版本替换工作区版本)

  • git reset HEAD <file>:暂存区的修改撤销掉(修改的东西add了还没commit使用)

    <没add,直接checkout>

    <add了没commit,先reset HEAD,将暂存区撤销,然后再checkout,将工作区的丢弃>

    <commit了,回退版本>

  • git rm <file>:删除版本库中文件,再commit提交

    <删除对了:OK>

    <删除错了:git checkout --file,被误删的文件就可以恢复到版本库版本>

远程仓库

github,本地git仓库和github之间传输通过ssh加密,所以需要在github设置中添加ssh key

git支持多种协议,包括https,但通过ssh支持的原生git协议速度更快

先有本地库 后有远程库

$ git remote add origin git@github.com:LastJason/learngit.git
关联本地库和远程库,添加后,远程库的名字就是origin,是git默认的叫法
  
$ git push -u origin master
将本地库的内容推送到远程,实际上是将当前分支master推送到远程
-u参数可以将本地master分支和远程的master分支关联起来,在以后的推送和拉取时就可以简化命令
  
$ git push origin master
将本地master分支修改推送到github
先远程库,后本地库

$ git clone git@github.com:LastJason/gitskills.git
克隆库

分支

git branch
查看分支

git switch <name>/git checkout <name>
切换分支

git branch <name>
创建分支

git switch -c <name>
创建并切换分支

git merge <name>
合并某分支到当前分支

git branch -d <name>
删除分支
git branch -D <name>
强制删除

[图片上传失败...(image-e0087b-1579070341521)]

解决冲突

冲突使用git status查看冲突文件,打开文件编辑

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容

使用git log –graph查看分支合并情况

分支合并

  • 一般情况,git会使用fast forward模式来合并,但是这种模式下,删除分支后,会丢掉分支信息
  • 强制禁用fast forward模式后,git会在合并时生成一个新的commit,这样就可以在分支历史上看到分支信息

[图片上传失败...(image-d9119f-1579070341522)]

分支策略

  • master分支非常稳定,仅用来发布新版本,平时不干活
  • dev上干活,发布版本时合并到master上
  • 每一个人都有自己的分支,时不时往dev上合并

[图片上传失败...(image-ac0d61-1579070341522)]

bug分支

  • 软件开发遇到bug,可以通过新建一个临时分支,在临时分支上修改最后合并的方式来修复

  • 但是假如你工作到一半,还没提交,还要一天,但是bug现在就要改怎么办

    1.  git stash
        可以把当前工作现场储存起来,等以后恢复现场,然后继续工作
    
    2.  git checkout master
        git checkout -b new-issue1
        确定要在哪个分支上修复bug,在哪个分支修改就在哪个分支创建临时分支
    
    3.  修改bug
    
    4.  git add readme.txt
        git commit -m "info"
        提交更改
    
    5.    修复完成后,切换到master分支完成合并,然后删除临时分支
      git checkout master
      git merge --no-ff -m "merge" new-issue1
      
    6.    git checkout dev
      回到工作分区
      git stash list
      查看储存的工作现场
      git stash pop(git stash apply,git stash drop)
      恢复工作现场并删除stash临时内容(恢复工作现场,删除stash临时内容)
    
  • 假设master里面的bug改掉了,但是你现在的工作区是很久前的分支,这个bug在你的工作分支依旧存在,不用再修改一次,直接把master的修改内容复制到dev就可以

    git cherry-pick commit_id
    复制commit_id对应的这次修改到当前分支
    

推送分支

  • 远程库

    1.    git remote
      查看远程库的信息
      
    2.    git push origin master
      将origin推送到master(将origin分支上所有本地提交推送到远程master库)
      
    3.    git pull
      拉取远程库进行合并
      
    4.    git branch --set-upstream-to <branch-name> origin/<branch-name>
      关联本地分支和远程分支(假如提示 no tracking information就这样)
    

标签管理

  • 发布版本时,会将这个版本打个标签,tag就是一个让人容易记住的名字,和某个commit绑定

    把上次那个打包发布一下,commit号6a5819...
    把上次那个打包发布一下,版本号v1.2
    
  • 创建标签

    1.    git checkout <branch-name>
      切换到对应标签
      
    2.    git tag <name>
      添加标签
      
    3.    git tag
      查看所有标签
      
    4.    git show <tagname>
      查看标签信息
      
    5.    git tag -d <tagname>
      删除本地标签
      
    6.    git push origin <tagname>
      推送一个本地标签
      git push origin --tags
      推送所有本地标签
      git push origin :refs/tags/<tagname>
      删除一个远程标签
    

忽略特殊文件

  • 创建特殊文件 .gitignore ,然后将不希望提交的文件名写进去就可以

相关文章

网友评论

      本文标题:2020-01-08

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