Git常用命令

Git教程笔记

教程链接:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

创建版本库

  • git init: 初始化一个Git仓库,将当前目录变为Git管理的仓库
  • git add <filename>:把文件添加到仓库(stage中),可以反复多次使用,添加多个文件
  • git commit -m "版本描述":完成,添加注释,把文件按提交到仓库

时光机穿梭

  • git status:随时掌握工作区的当前状态
  • git diff <filename>:如果git status告诉你文件被修改过,查看修改的内容使用

git reset --hard commit_idHEAD指向的版本就是当前的版本,因此,Git允许我在版本的历史之间穿梭,使用如下命令

版本回退

  • git log:穿梭前,可以查看提交历史,以便确定要退回到哪个版本,显示从最近到最远的提交日志
  • git log --pretty=oneline:以单行形式显示提交日志
  • git reset --hard commit_id:回退/前进到commit_id指向的版本
  • git reset --hard HEAD^:当修改错了工作区某个文件的内容,还使用了git add将文件添加到了暂存区时,想丢弃修改,回退到上一版本
  • git reflog:要重返未来,查看各个版本的commit_id,以便确定要回到未来哪个版本

管理修改

  • git 管理的是修改,而非文件。
  • 第一次修改 -> git add -> 第二次修改 -> git commit

撤销修改

  • git checkout -- <filename>:丢弃工作区的修改,返回最近一次add/commit时的文件状态
  • git reset HEAD <filename>:丢弃暂存区的修改

删除文件

  • git rm <filename>:从版本库中删除文件

远程仓库

添加远程库

  1. 登陆GitHub,“Create a new repository”
  2. 添加远程库:git remote add origin git@github.com:<username>/<repository name>.git
  3. 推送并关联本地master分支:git push -u origin master
  4. 提交master分支修改到远程库:git push origin master

从远程库克隆

  • git clone git@github.com:<username>/<repository name>.git
  • GitHub支持ssh/https协议

分支管理

创建和合并分支

  • git branch <name>:创建分支
  • git branch:查看分支
  • git checkout <name>:切换分支
  • git checkout -b <name>:创建+切换分支
  • git merge <name>:合并某分支到当前分支
  • git branch -d <name>:删除分支

解决冲突

  • 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成
  • git log --graph:看到分支合并图
  • git log --graph --pretty=oneline --abbrev-commit单行显示分支合并图

分支管理策略

  1. git merge <name>:fast forward模式合并,删除分支,分支信息被丢弃
  2. git merge --no-ff:普通模式合并,合并后历史有分支,可通过git log --graph看到分支合并记录

Bug分支

  • git stash:储存当前工作现场
  • git stash list:列出所有stash
  • git stash apply:恢复最近一次储存的stash
  • git stash drop:删除最近一次储存的stash
  • git stash pop:恢复+删除最近一次stash
  • git stash stash@{num}:恢复指定stash

feature分支

  • git branch -D <name>:强行删除没有被合并的分支

多人协作

  • git remote -v:查看远程库的详细信息
  • git checkout -b dev origin/dev:创建远程origin的dev分支到本地
  • git branch --set-upstream dev origin/dev:建立本地分支和远程分支的关联
  • git pull:抓取远程的新提交
  • git push origin branch-name:把分支上的所有本地提交推送到远程库,。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上

标签管理

  • 是指向某个commit的指针
  • 标签不能移动
  • 创建和删除标签都是瞬间完成的

创建标签

  • eg:git tag v1.0
  • git tag:列出所有标签(按字母排序)
  • git tag <tagname>:新建一个标签,默认为HEAD,也可以指定一个commit id
  • git tag -a <tagname> -m "description":指定标签信息
  • git tag -s <tagname> -m "description...:"通过-s用私钥签名一个标签
  • git show <tagname>:查看标签信息

操作标签

  • git push origin <tagname>:推送本地标签到远程库
  • git push origin --tags:推送全部未推送过的本地标签
  • git tag -d <tagname>:删除本地标签
  • git push origin :refs/tags/<tagname>:删除远程标签
    如果要删除远程标签就得先删除本地标签,再从远程删除。

使用GitHub

  • 自己拥有Fork后的仓库的读写权限
  • 可以推送pull request给官方仓库来贡献代码

自定义Git

  • git config --global color.ui true:让Git显示颜色

忽略特殊文件

  1. .gitignore:配置要忽略的文件
  2. 这里 可以在线浏览各种配置文件,无需从头写.gitignore文件

配置别名

  • 别名是命令的缩写
  • 例子:
    1. git config --global alias.st status:配置status别名为st
    2. git config --global alias.co checkout:
    3. git config --global alias.ci commit:
    4. git config --global alias.br branch:
    5. git config --global alias.unstage 'reset HEAD':
    6. git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit":
  • 配置文件:
    1. .git/config:仓库的Git配置文件
    2. .gitconfig:当前用户的Git配置文件,放在用户主目录下

搭建Git服务器

  1. 安装git:sudo apt-get install git
  2. 创建git用户:sudo adduser git
  3. 创建证书登录:搜集登陆用户公钥(id_rsa.pub)文件,导入/home/git/.ssh/authorized_keys文件,一行一个
  4. 初始化Git仓库
    • sudo git init --bare sample.git
    • sudo chown R git:git sample.git:修改裸仓库owner,防止其他用户篡改工作区
  5. 禁用shell登陆(git-shell一登陆就自动退出)
    • vi /etc/passwd
    • git:x:........:/bin/bash-->git:x:......:/usr/bin/git-shell
  6. 克隆远程仓库,本地运行,修改后推送
    • git clone git@server:/srv/sample.git
    • git push
  7. 要方便管理公钥,用Gitosis
  8. 要像SVN那样变态地控制权限,用Gitolite
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容

  • 基础命令 用户设置 初始化仓库 把文件添加到仓库 把文件提交到仓库 添加文件到Git仓库 分两步: 第一步,使用命...
    前端渣渣阅读 1,420评论 0 20
  • **#设置全局的配置文件,放在当前用户主目录下(Administrator)的.gitconfig文件中。用户名和...
    听风就是雨之路人甲阅读 343评论 0 1
  • 【奇迹日记】第二天 1.我想解决的问题是什么呢?找到我的人生伴侣 2.今天我体验到了什么呢?绽放 自信 爱自己 3...
    Lucky琳达阅读 121评论 0 0