Git命令整理

简介

Git是一款免费、开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。目前开发中大部分开发者都是使用的Git。

如果是初学者要由浅入深的完成学习Git的话,首推就是廖雪峰的Git教程。

如果说书籍的话,看书比较少,不过觉得《Android群英传:神兵利器》的第二章讲的还不错。书的PDF版 (侵删)。

书中的这张图觉得不错,有助于对Git的理解:

Git命令整理_第1张图片
iamge

本文并不是一个对git讲解,而只是对常用的一些Git命令的整理。

盗一张图:该图将Git的常用操作已经做了很详尽的整理,使用的时候完全可以做在这张图中找。下面我也只是对该图做了一些整理,拣选了些更常用的。图片在这里保存好使不是很清晰,网盘分享了下 。

Git命令整理_第2张图片
Git命令.png


基本流程

  • 全局配置
    git config --global user.name "wooden"
    git config --global user.email "wooden.163.com"
    
  • 创建新库,创建README.md并提交
    git clone https://github.com/GwindIT/Test.git
    cd Test
    touch README.md
    git add README.md
    git commit -m "add README"
    git push -u origin master
    
  • 已存在项目关联远程Git库
    cd existing_folder
    git init
    git remote add origin https://github.com/GwindIT/Test.git
    git add .
    git commit
    git push -u origin master
    

常用操作

该部分的命令是摘取的更为常用的命令。

git clone  (创建新库)

git add .   (添加所有文件到版本库)

git commit -m "msg"  (提交所有修改)

git merge  (合并分支)

git checkout -b  ( 基于当前分支的末梢创建新分支并且检出分支)

git checkout  (检出分支)

git push (推入远程库)

git pull (获取并且合并到当前本地分支)

git diff (比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异)

git status (列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit)的文件)

本地操作

初始化

  • Git用户名邮箱的全局配置

    git config --global user.name "wooden"
    git config --global user.email "wooden.163.com"
    git config --global color.ui "always"
    
  • 初始化新版本库

    git init 
    
    • 根目录下创建一个名为.git的文件夹。如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
  • 设置忽略文件

    • 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
  • 添加文件到新版本库

    • 添加单个文件:
    git add somefile.txt
    
    • 添加所有txt文件:
    git add *.txt
    
    • 添加所有文件,包括子目录,但不包括空目录:
    git add .
    
    • 仅监控已经被add的文件(即tracked file),会将被修改的文件提交到暂存区。add -u 不会提交新文件(git add -update)
     git add -u
    
  • 提交

    • 提交
    git commit -m "Message"
    
    • add与commit的合并操作
    git commit -am "Message"
    

    但需要注意改命令只是提交修改的文件,当有新建的文件的时候是无法提交的。

日常操作

  • 提交

    • 提交所有修改文件
    git commit -m "msg" -a
    
    • 提交单个文件
    git commit -m "add readme msg" readme.txt  
    
  • 撤销修改

    • 撤销尚未提交的修改

      • 撤销某个文件
      git checkout head readme.txt 
      
      • 撤销所有txt文件
      git checkout head *.txt
      
      • 撤销所有文件
      git checkout head .
      
    • 撤销提交的修改

      • 反转提交
      git revert --no-commit head
      

      生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留

      • 复位
      取消暂存:git reset head 或 git reset head 
      复位到head之前的版本:git reset --hard head
      

      不会在版本中留下痕迹

  • 分支

    • 列出本地分支
    git branch
    
    • 列出所有分支
    git branch -a
    
    • 基于当前分支末梢创建新分支
    git branch 
    
    • 检出分支
    git checkout 
    
    • 基于当前分支的末梢创建新分支并且检出分支
    git checkout -b 
    
    • 合并分支

      • 普通合并
      git merge  
      

      发生冲突不会自动提交,需要解决冲突。

      • 压合合并
      git merge -squash 
      
      • 拣选合并
      git cherry-pick --no-commit 
      
    • 重命名分支

    git branch -m   (不会覆盖已存在的同名分支)
    git branch -M   (覆盖已存在的同名分支)
    
    • 删除分支
    git branch -d new2 (如果分支没有被合并会删除失败)
    git branch -D new2 (即使分支没有被合并也照删不误)
    
  • 解决冲突

    • 冲突很少时,直接编辑冲突文件然后提交即可。
  • 标签

    • 创建标签
    git tag 1.0
    git tag -a v1.4 -m 'my version 1.4'
    
    • 将标签推送到远程仓库
    git push origin [tagname](单个标签)
    git push [origin] --tags(所有标签)
    
    • 显示标签列表
    git tag
    
    • 检出标签
    git checkout 1.0
    
    • 由标签创建分支
    git checkout -b b1.0 1.0
    git branch b1.0 1.0
    
    • 通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作:
      git push origin v0.1.2 # 将v0.1.2标签提交到git服务器
      git push origin –tags # 将本地所有标签一次性提交到git服务器
    
    • 删除本地标签

      git tag -d 1.0
      
  • 删除远程标签

    git push origin :refs/tags/标签名 
    git push origin :refs/tags/protobuf-2.5.0rc1 
    
  • 查看状态

    • 当前状态
    git status
    
    • 历史记录
    git log
    gitk (查看当前分支记录)
    gitk  (查看某分支历史记录)
    gitk -all (查看所有分支)
    
    • 每个分支最后的提交
    git branch -v
    

远程操作

初始化

  • 克隆版本库

    git clone 
    
  • 别名

    • 添加别名
    git remote add <别名> <远程库URL>
    
    • 删除别名
    git remote rm <别名>
    
  • 创建一个无本地分支的库

    git branch -bare
    

日常操作

  • 分支

    • 列出远程分支
    git branch -r
    
    • 删除远程分支
     git push origin --delete 
    
    • 删除远程已经不存在的分支
    git remote prune origin
    
  • 从远程获取

    • 获取但不合并
    git fetch <远程版本库>
    
    • 获取并且合并到当前本地分支
    git pull
    
  • 推入远程库

    git push origin master
    
  • 本地分支与关联远程分支

    git branch --set-upstream-to=origin/
    

你可能感兴趣的:(Git命令整理)