Git学习笔记

1 git学习笔记

学习自:
廖雪峰的官方网站

1.1 基础

  • 千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议下载Notepad++代替记事本。记得把Notepad++的默认编码设置为UTF-8 without BOM

  • git status / git diff / git log (--pretty=oneline)

  • 工作区--暂存区--HEAD(master...)

  • HEAD指向master, master指最新的提交,上个版本HEAD^,上上个HEAD^^...

1.2 版本控制

  • git reset --hard HEAD^ # 回滚到上一个版本 (或:git reset --hard版本号代码)

  • reset后只是本地回退到之前版本,若要更新到远程库需要强制推送git push -f,当前版本之后的commit会全部消失

  • git relog #记录每一次命令,可用作回到未来版本; git log 可在回退之前版本前用来查看提交历史

  • git checkout -- readme.txt #丢弃工作区修改,恢复上一版本状态(未add之前用)

  • git reset HEAD filename # add但未commit用,撤销暂存区内容

  • git rm filename # 删除版本库文件,若是误删可用git checkout -- readme.txt恢复

1.3 分支

  • Github中远程库的名字是origin, git push -u origin master #把当前分支master推送到origin, -u 建立本地和远程分支的关联,以后推送可以简化命令。

  • 通过ssh支持的原生git协议速度最快。

  • 创建分支dev后,新建了一个指针dev,现在HEAD指向dev,再编辑的话dev前移,master指针不变

  • git checkout -b dev #创建并切换到新分支 = git branch dev + git checkout dev

  • git checkout -b dev origin/dev # 创建远程origin的dev分支到本地,本地和远程分支的名称最好一致;

  • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

  • git switch -c dev #创建并切换到新分支(和 git checkout -b dev 一样)

  • git branch #查看当前分支 git checkout master 切换HEAD到master分支上 (还可用git switch master)

  • git merge dev #合并指定分支和当前分支

  • git branch -d dev #删除dev分支

  • 丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

  • Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

  • git log --graph --pretty=oneline --abbrev-commit #查看分支合并情况

  • 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

  • 一般都是在dev上工作,形成版本时发布到master

  • 时刻注意远程分支和本地分支的区别; git branch -a 查看所有分支,带有remote/origin/xxx的是远程分支

  • git push origin --delete xxx 删除某个远程分支remote/origin/xxx

1.4 bug处理

  • git stash #储存当前工作区,修复bug时用,先新建分支修复bug/ git stash pop 恢复工作现场并删除stash / git stash list 查看stash区

  • git checkout master + git checkout -b issue-xxx #创建修复bug的分支

  • git switch master + git merge --no-ff -m "merged bug fix" #修复完成后删除该分支

  • git cherry-pick xxx / 在当前分支重复一遍xxx修改

  • git remote -v #查看远程库信息 git push origin xxx #推送xxx分支到origin

1.5 标签管理

  • git tag v1.0 #创建tag,便于管理 git tag 查看所有标签

  • git tag v0.9 xxx #为commit id 为xxx 的操作打标签 / git show v0.9 #查看标签对应commit

  • git tag -a v1.0 -m "..." xxx #标签也可以加上-m

  • git push origin --tags #推送标签到origin

  • git tag -d v0.9 #标签本地删除 / git push origin :refs/tags/v0.9 #远程删除标签

Author: zcp
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source zcp !
评论
 Previous
渋谷半日游 渋谷半日游
1 多图警告!久违趁天气不错地出去转了转,正好前一向在新闻里看到2019年秋涉谷开放了一个新的展望台SHIBUYA SKY,高229m,东京铁塔、富士山、晴空塔、涉谷十字路口等有名景点都能一览无余,简直超棒好嘛。于是想着工作日人应
Next 
新的一年,还是写点什么吧 新的一年,还是写点什么吧
最近在忙着做presentation的PPT, 当做是这几个月的一个小节吧。接下来还有毕设的任务,到现在还没开始做也是慌得一匹,别人开题都开完了- -不过好在收获也挺多的,也算是体验了一下留学生活吧。日本过年过的是阳历,每年的最后一天叫啥大
  TOC