美文网首页
Git 操作指南

Git 操作指南

作者: chenbingle | 来源:发表于2017-03-08 16:03 被阅读40次

    仓库操作

    新建仓库

    git init
    

    实质:新建一个.git目录,所有git有关的信息都在里面。

    克隆仓库

    git clone
    

    查看远程仓库

    git remote -v 
    

    添加远程仓库

    git remote add [name] [url]
    

    name 通常为origin

    删除远程仓库

    git remote rm [name]
    

    修改远程仓库

    git remote set-url --push [name] [newUrl]
    

    拉取远程仓库

    git pull [remoteName] [localBranchName]
    

    推送远程仓库

    git push [remoteName] [localBranchName]
    

    本地分支操作

    查看分支

    git branch
    

    创建分支

    git branch branchName
    

    切换分支

    git checkout branchName
    

    删除分支

    git branch -d branchName
    

    合并分支

    git checkout master
    git merge dev 
    

    文件操作

    工作区 暂存区 历史区

    查看状态

     git status
    

    添加追踪

    git add filename
    git add .
    

    删除文件

    git rm 
    

    移动文件

    git mv file the/new/path/
    

    重命名文件

    git mv file newfile
    

    提交修改

    git commit -m 'commit log'
    

    远程分支操作

    获取远程分支

    git checkout -b [name] [remoteName] 
    

    例如:

    git checkout -b myNewBranch origin/dragon
    

    git 1.6版本以后,有简化的命令:

    git checkout --track origin/[remoteName]
    

    直接在本地检出与远程分支名字一致的分支。

    跟踪远程分支

    git branch --set-upstream-to=origin/<remoteBranchName> localBranchName
    

    备注:如何查看跟踪关系,使用如下命令

        git config --list
    

    拉取远程分支到本地

    git pull origin remoteBranchName:localBranchName
    

    推送本地分支到远程

    git push origin localBranchName:remoteBranchName
    

    如果remoteBranchName远程分支不存在,则在远端自动创建。

    推送当前分支到远程

    git push origin remoteBranchName
    

    同理,如果remoteBranchName远程分支不存在,则在远端自动创建。

    备注:通常我们都直接用git push,不带后面的参数(建立好了追踪关系)。

    删除远程分支

    git push origin :remoteBranchName
    

    git配置文件

    用户配置文件位置

    ~/.gitconfig
    

    查看配置信息

    git config --list
    

    配置用户名和密码

    git config --global user.name gzchenquanbin
    git config --global user.email gzchenquanbin@corp.netease.com
    

    开启颜色显示

    git config --global corlor.ui true
    

    配置编辑器

    git config --glabal core.editor emacs   #默认为vi或者vim
    

    配置比较工具

    git config --global merge.tool vimdiff
    

    其它技巧

    查看差异

    git diff                               #显示的是工作区和暂存区的差别
    git diff --stat                        #只显示差别的统计信息,不详细显示
    git diff --cached/staged               #显示的是暂存区和仓库的差别,也就是下次commit的内容
    git diff HEAD                          #显示的是工作区和仓库的差别
    git diff HEAD file                     #显示的是工作区和仓库指定文件(目录)的差别
    git diff commitId file                 #显示的是工作区
    git diff commitId1 commitId2           #比较两次commit之间的差异
    git diff commitId1 commitId2 file      #比较两次commit之间某个文件的差异
    git diff branch1 branch2               #比较两个分支上的最新提交
    git diff branch                        #比较当前分支与指定分支的当前目录差异
    git diff branch file                   #比较当前分支与指定分支的指定文件(目录)差异
    

    查看提交日志

    git log
    git log -2   #查看最近两次的提交日志
    

    查看某次提交的详细修改

    git show commitId
    

    修改撤销

    • 只在工作区修改,还没有add到暂存区

       git checkout -- file
      
    • 已经add到暂存区

       git reset HEAD file
      

      备注:之前的修改被回退到工作区

    • 已经commit到仓库

       git reset --hard HEAD^          #回退到上一个提交
       git reset --hard HEAD^^         #回退到上上一个版本
       git reset --hard HEAD~10        #往前回退10个版本
       git reset --hard commitID       #指向任意一个提交
      
    • 已经push到远端

       sorry,无能为力了
      

    藏匿与恢复

    git stash
    git stash pop 
    

    .gitignore文件

    项目中经常会生成一些Git系统不需要追踪(track)的文件。典型的是在编译生成过程中 产生的文件或是编程器生成的临时备份文件。
    当然,你不追踪(track)这些文件,可以 平时不用"git add"去把它们加到索引中。 但是这样会很快变成一件烦人的事,你发现 项目中到处有未追踪(untracked)的文件; 这样也使"git add ." 和"git commit -a" 变得实际上没有用处,同时"git status"命令的输出也会有它们。
    这时,你可以在你的顶层工作目录中添加一个叫".gitignore"的文件,来告诉Git系统要忽略 掉哪些文件,下面是文件内容的示例:

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

    .gitignore不生效怎么办

    有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

    git rm -r --cached .
    git add .
    git commit -m 'update .gitignore'

    相关文章

      网友评论

          本文标题:Git 操作指南

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