Git命令整理

简介

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

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

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

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

iamge

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

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

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 <url> (创建新库)

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

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

git merge <branchname> (合并分支)

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

git checkout <branchname> (检出分支)

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 <filename>
      复位到head之前的版本:git reset --hard head
      

      不会在版本中留下痕迹

  • 分支

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

      • 普通合并
      git merge <branchname> 
      

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

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

    git branch -m <branchname> <newname> (不会覆盖已存在的同名分支)
    git branch -M <branchname> <newname> (覆盖已存在的同名分支)
    
    • 删除分支
    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 <branchname> (查看某分支历史记录)
    gitk -all (查看所有分支)
    
    • 每个分支最后的提交
    git branch -v
    

远程操作

初始化

  • 克隆版本库

    git clone <url>
    
  • 别名

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

    git branch -bare
    

日常操作

  • 分支

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

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

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

    git branch --set-upstream-to=origin/<branchename>
    

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335