Git - 分布式版本控制系统

状态

Git 有三种状态,你的文件可能处 于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的 保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前 版本做了标记,使之包含在下次提交的快照中。

tapd_22285581_1558941076_42.png

由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
基本的 Git 工作流程如下:

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 已跟踪的文件是指那些被纳入了 版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已 放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记 录中,也没有放入暂存区。

tapd_22285581_1558942318_8.png

版本回退

HEAD是一个特别指针,它指向你正在工作中的本地分支的指针,可以将 HEAD 想象为当前分支的别名。

#^代表第一父提交,命令回退到HEAD的第一父提交也就是上一版本,--hard会将所有状态的文件同样回退到上一个版本的状态
git reset --hard HEAD^
#回退到指定commit_id的版本,commit_id是用SHA1计算出来的一长串数字,只写前几位数字github也能找到相关版本
git reset --hard <commit_id>

查看日志

git log

git log --pretty=oneline

查看区别

git diff HEAD -- <file>

git show命令

git show 

撤销修改

#将暂存区的修改撤销重新放回工作区,可以看到reset命令既可以回退版本,也可以撤销修改
git reset HEAD <file>
#将文件在工作区的修改全部撤销,就是让这个文件回到最近一次git commit或git add时的状态。这个命令中的--很重要,如果去掉--就变成了切换分支的命令
git checkout -- <file>

删除文件

#相当于手动删除文件,然后add添加到暂存区
git rm <file>
#删错了要恢复
git reset HEAD <file>
git checkout -- <file>

创建分支

#-b参数表示创建并切换
git checkout -b <branch_name>
#相当于
git branch dev
git checkout dev

查看当前分支

#列出所有分支,当前分支前面会标一个 * 号
git branch

合并分支

git merge <要合并的分支名称>
#解决合并冲突,git status查看不能合并的文件,打开文件github会在冲突的地方做出标记,然后我们只需要手动编辑要保留的内容,然后提交文件

删除本地和远程分支

#删除本地
git branch -d <branch_name>
#删除远程
git push origin --delete <branch_name>

储藏工作

#储藏之后再git status 就会出现nothing to commit, working tree clean,可以多次stash
git stash
#储藏的工作列表
git stash list

恢复储藏工作

#用stash apply恢复,但是恢复后,stash内容并不删除,你需要用stash drop来删除;
git stash apply
git stash drop
#stash pop恢复的同时把stash内容也删了
git stash pop
#恢复删除指定的stash,用stash list查看列表选中一个恢复,其中最近一次stash的num值最大,最早的num值为0,删除一个stash后num值全部减一。
git stash apply stash@{<num>}
git stash drop stash@{<num>}

删除未合并的分支

#将小d改为大D就可以了
git branch -D <branch_name>

查看远程库的信息

git remote
#查看更详细的信息,显示抓取(fetch)和推送(push)的远程信息,如果没有推送权限则不显示push的远程信息
git remote -v

推送分支

git push origin <branch_name>

抓取分支

#抓取过程中如果有冲突要先解决冲突
git pull

本地创建和远程分支对应的分支

git checkout -b <branch_name> origin/<branch_name>

建立本地分支和远程分支的关联

git branch --set-upstream branch-name origin/branch-name

将提交历史整理成直线

#存在风险,可完整阅读官方文档加深理解
git rebase

创建标签

#在最近一次的commit上创建标签
git tag <tag_name>
#在指定的commit上创建标签
git tag <tag_name> <commit_id>
#创建带有说明的标签
git tag -a <tag_name> -m <text> <commit_id>
#查看标签,按字母排序,而不是按时间排序
git tag
#查看标签信息
git show <tag_name>

操作标签

#删除标签
git tag -d <tag_name>
#推送单个标签到远程
git push origin <tag_name>
#一次性推送所有尚未推送到远程的本地标签
git push origin --tag
#删除已经推送到远程的标签,冒号代表删除
git tag -d <tag_name>
git push origin :refs/tags/<tag_name>

忽略特殊文件

Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
官方配置文件模版,使用时可根据实际情况组合一下。
如果某次需要添加被忽略的文件到Git

git add -f App.class

如果发现某个不应该被忽略的文件被忽略了

git check-ignore -v App.class

Git会告诉我们,.gitignore的第几行规则忽略了该文件。

配置别名

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'

删除别名

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

推荐阅读更多精彩内容