git学习记录

  • git init
    创建git仓库
  • git add
    添加文件到仓库
  • git commit -m "xxx"
    提交文件到仓库
  • git status查看仓库当前状态
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

上边的命令说: reademe别修改过还没commit

  • git diff
    查看上次修改
  • git log
$ git log --pretty=oneline

查看版本历史记录

  • 版本回退
    Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
    使用git reset命令
 git reset --hard HEAD^
HEAD is now at ea34578 add distributed
// 还可以通过reset 版本号的方式去写, 版本号不一定要输全git会自己搜索
$ git reset --hard ea34578
  • git reflog: 用来记录你的每一次命令
  • 工作区(Working Directory)和版本库(Repository)和暂存区(stage)
    git add命令:


    0.jpeg

    git commit命令:


    image
  • 撤销修改
  1. git add 之前撤销修改
$ git checkout -- <file>
  1. git add之后撤销修改
1. 撤销暂存区修改 
git reset HEAD <file>
2. 撤销工作区修改
$ git checkout -- <file>
  • 删除文件
    添加一个文件
$ git add test.txt
$ git commit -m "添加一个文件"

删除工作区的文件

$ rm test.txt

删除git里的文件

$ git rm test.txt
$ git commit -m "删除一个文件"

本地删错了, 可以恢复

$ git checkout -- <file>
  • 添加远程仓库
  1. 链接远程库
$ git remote add origin <git地址>
  1. 本地库推送到远程库(第一次提交加参数 -u)
$ git push -u origin master
  1. 以后提交到master
 $ git push origin master
  • 从远程库克隆
    现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆
  1. 在github上常见新的仓库
  2. 使用git clone克隆一下代码
git clone <giturl>
  • 创建和合并分支
  1. 创建dev分并切换到dev分支
$ git checkout -b dev
Switched to a new branch 'dev'

git checkout -b相当于:

$ git branch dev
$ git checkout dev

产看当前分支

$ git branch
* dev
  master
  1. 修改工作区文件并提交
$ git add -A
$ git commit -m "new branch dev"
  1. 切换到maser, 并查看dev中修改的文件, 发现不见了
$ git checkout master
  1. 把dev分支的代码合并到master上
$ git merge dev

删除dev分支

$ git branch -d dev

创建与合并分支

  • 解决分支冲突
  1. 创建新分支feature1
git checkout -b feature1
  1. 更改文件
$ git add -A
$ git commit -m "feature1"

3 . 切回master, 修改文件并提交

$ git checkout master
$ git add -A
$ git commit -m "feature"
  1. 合并feature1 分支 发生冲突, 手动更改
git merge feature1
// 冲突
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
  1. 修改后, 重新提交
$ git add -A 
$ git commit -m "xxx"

6 使用git log产看合并情况

$ git log --graph --pretty=oneline --abbrev-commit
  1. 删除feature1分支
$ git branch -d feature1
  • 分支管理策略
    分支合并是fast forward模式会丢掉分支信息, 通常会--no-ff方式git merge
  1. 创建并切换分支dev, 并修改文件,
$ git checkout -b dev
  1. 切回master
$ git checkout master
  1. 用--no-ff方式git merge
$ git merge --no-ff -m "dev merge no-ff" dev
  1. git log 查看分支合并情况
$ git log --graph --pretty=oneline --abbrev=commit

分支管理策略总结:

  1. master分支仅用于发布新版本, 不可以写代码
  2. 代码写在dev分支写代码, 每个人在dev分支上创建自己的分支, 需要的时候往dev上合并, 发布版本的时候,将dev合并到master上
    image

    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
  • bug分支
    `. 在dev分支工作区未提交, 可以先用git stash储存工作现场
$ git stash
  1. 在切换到master, 并创建bug分支 issue-101, 然后修复bug后合并
$ git checkout master
$ git checkout -b issue-101
$ git add -A
$ git commit -m "修复bug"
$ git checkout master
$ git merge --no-ff -m "修复bug" issue-101
  1. 切换到dev分支, 找回工作现场 -> 还原现场并删除stash记录
$ git checkout dev
$ git stash list // 产看保存的工作现场列表
stash@{0}: WIP on dev: 6224937 add merge
1. $ git stash apply stash@{0} 不删除记录, 需要 $ git stash drop
2. $ git stash pop stash@{0} 还原并删除
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容