美文网首页
Git常用命令

Git常用命令

作者: Mr_Laoyu | 来源:发表于2017-08-24 11:33 被阅读0次

    git vs svn

    对比 git svn
    服务 分布式(本地仓库远程仓库) 集中式(没有网络的情况下不能提交、对比等操作)
    学习曲线 相对复杂 相对简单
    分支 廉价 (指向某次提交) 昂贵 (拷贝目录)

    Git工作模式:

    • 工作区(Workspace)是电脑中实际的目录。
    • 暂存区(Index)类似于缓存区域,临时保存你的改动。
    • 仓库区(Repository),分为本地仓库和远程仓库。
    Git工作流

    git 基操流程

    git clone xxx.xxx.git  //克隆一个远程仓库
    git clone -b 分支名 xxx.xxx.git
    git pull //拉取远程代码,一般在编码前操作
    git status   //查看本地文件更改状态
    git add <file>   //添加文件到暂存区,如果添加全部用“.”
    git commit -m '更新内容摘要' //提交到本地仓库
    git push //推送到远程分支
    

    本地项目初始化推送到远程

    //删除.git 文件夹(如果是拉取别人到开源代码)
    rm -rf .git
    git init
    //在代码仓库新建一个repository,复制仓库地址如xxx.xxx.git
    git remote add origin xxx.xxx.git
    git add .
    git commit -am 'init'
    git push
    

    最简单的推送到远程的方法
    在github或gitlab等平台建立一个远程仓库
    git clone 到本地就可以各种操作了

    .gitignore

    忽略一些不需要提交的文件,如nodejs的依赖包,PHP的vender依赖包,缓存文件,编辑器配置文件,项目日志文件等。

    /node_modules
    /public/hot
    /public/storage
    /storage/*.key
    /vendor
    /.idea
    /.vagrant
    /.vscode
    Homestead.json
    Homestead.yaml
    npm-debug.log
    yarn-error.log
    .env
    .DS_Store
    *.swp
    /**/cache/*
    

    查询

    # 查看工作区文件修改状态
    $ git status               
    
    # 查看工作区文件修改具体内容   
    $ git diff [file]
    
    # 查看暂存区文件修改内容
    $ git diff --cached [file] 
    
    # 查看版本库修改记录
    $ git log                  
    
    # 查看某人提交记录
    $ git log --author=someone 
    
    # 查看某个文件的历史具体修改内容
    $ git log -p [file]        
    
    # 查看某次提交具体修改内容
    $ git show [commit]
    

    撤销

    # 恢复暂存区的指定文件到工作区
    $ git checkout [file]
    
    # 恢复暂存区当前目录的所有文件到工作区
    $ git checkout .
    
    # 恢复工作区到指定 commit
    $ git checkout [commit]
    
    # 重置暂存区的指定文件,与上一次 commit 保持一致,但工作区不变
    $ git reset [file]
    
    # 重置暂存区与工作区,与上一次 commit 保持一致
    $ git reset --hard
    
    # 重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变
    $ git reset [commit]
    
    # 重置当前分支的HEAD为指定 commit,同时重置暂存区和工作区,与指定 commit 一致
    $ git reset --hard [commit]
    
    # 新建一个 commit,用于撤销指定 commit
    $ git revert [commit]
    
    # 将未提交的变化放在储藏区
    $ git stash
    
    # 将储藏区的内容恢复到当前工作区
    $ git stash pop
    

    分支

    # 列出所有本地分支
    $ git branch
    
    # 列出所有本地分支和远程分支
    $ git branch -a
    
    # 新建一个分支,但依然停留在当前分支
    $ git branch [branch-name]
    
    # 新建一个分支,并切换到该分支
    $ git checkout -b [new_branch] [remote-branch]
    
    # 切换到指定分支,并更新工作区
    $ git checkout [branch-name]
    
    # 合并指定分支到当前分支
    $ git merge [branch]
    
    # 选择一个 commit,合并进当前分支
    $ git cherry-pick [commit]
    
    # 删除本地分支,-D 参数强制删除分支
    $ git branch -d [branch-name]
    
    # 删除远程分支
    $ git push [remote] :[remote-branch]
    
    

    git merge

    //假如当前分支为develop,要合并develop分支的代码到master
    git checkout master
    git merge develop
    

    tag

    #查看tag版本
    $ git tag 
    
    # 添加tag -a 指定版本号,-m 摘要描述
    $ git tag -a 0.0.1 -m 'firsts commit'
    
    #推送到远程 版本号要和上面添加到一致
    $ git push origin 0.0.1  
    

    pull和fetch的区别

    git fetch origin master:tmp 
    //在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
    
    git diff tmp 
    //来比较本地代码与刚刚从远程下载下来的代码的区别
    
    git merge tmp
    //合并temp分支到本地的master分支
    
    git branch -d temp
    //如果不想保留temp分支 可以用这步删除
    
    
    git pull <远程主机名> <远程分支名>:<本地分支名>
    //取回远程主机某个分支的更新,再与本地的指定分支合并。
    

    与git pull相比git fetch相当于是从远程获取最新版本到本地,但不会自动merge。如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。

    账户全局配置

    git config --global user.name "xxxx"
    git config --global user.email "xxxx@example.com"
    git config --global credential.helper store 
    

    一些报错

    error: RPC failed; curl 18 transfer closed with outstanding read data remaining

    
    git config --global http.postBuffer 524288000
    git config --global http.sslVerify "false"
    

    工作流

    image.png

    待完善...

    相关文章

      网友评论

          本文标题:Git常用命令

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