码迷,mamicode.com
首页 > 其他好文 > 详细

Git笔记

时间:2015-06-27 16:26:47      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:git


  1. git add是提交到暂存区域
  2. git commit是提交到本地git目录 -a 跳过add到暂存域
  3. git commit –amend 修复上一次提交
  4. git push 是提交到远程目录
  5. git log查看提交历史 -p显示每次提交的内容差异 -2最近两次提交 – stat显示摘要,如次数 –pretty=format:”%h -%an, %ar %s” –graph
  6. git mv README2.md README3.md
  7. git reset HEAD pom.xml 从暂存域恢复回来
  8. git checkout – pom.xml撤销本地变更
  9. git remote -v查看当前的远程仓库
  10. git remote add pb git://github.com/dfa/gasdf.git添加远程仓库
  11. git fetch origin 命令会到远程仓库中拉取所有你本地仓库中还没有的数据.就可以在本地访问该远程仓库中的所有分支
  12. git remote show [remote-name]
  13. git remote rename originA originB :远程仓库的重命名
  14. git remote rm originB :远程仓库的删除
  15. git tag [-l ‘3.6‘] 列出tag[tag名满足通配符的tag]
  16. 发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。标签也是版本库的一个快照。
  17. Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(分支可以移动,标签不能移动)

  18. git tag -a v3.6.7.1 -m ‘my version 3.6.7.1’ 创建附注型标签

  19. git show v3.6.7.1
  20. git config –global alias.ci commit 创建别名 git ci <=> git commit
  21. git config –global alias.visual “!gitk”调用外部命令

  22. git branch 显示本地分支,不会切换到新的分支上

  23. git branch -a 显示所有分支(包括本地和远程),不会切换到新的分支上
  24. git branch testing 会在当前(最新)commit对象上新建一个分支指针

  25. git checkout -b iss53 新建分支iss53并切换到该分支 <==> git branch iss53 ; git checkout iss53

  26. git checkout testing 切换到testing分支,HEAD指向了testing分支。Git 会把工作目录的内容恢复为检出某分支时它所指向的那个commit的快照。它会自动添加、删除和修改文件以确保目录的内容和你上次提交时完全一样。

  27. Git 中的分支实际上仅是一个包含所指对象校验和(40 个字符长度SHA-1 字串)的文件,新建一个分支就是向一个文件写入41 个字节
    git每次提交时都记录了祖先信息.

  28. bugfix操作:返回到原先已经发布到生产服务器上的分支。为这次紧急修补建立一个新分支。测试通过后,将此修补分支合并,再推送到生产服务器上。切换到之前实现新需求的分支,继续工作。

  29. 转换分支之前应保持清洁的暂存域或本地工作目录,否则容易出现切换的分支与切换前的分支冲突(用stashing和amending可绕过)

  30. git checkout master ; git merge bugfix;会把master分支指针往前移,指向bugfix分支,因为他们在同一个分叉上。如果处于不同分叉上,git不会简单的右移,而是对要合并的两个分支以及他们的公共祖先的合并结果做一次快照,并让master指向该合并后的快照
    git branch -d bugfix;//此时可以删除bugfix了,因为master已经和bugfix指向同一个提交了。

  31. git branch -D testing删除未合并的分支会失败,可以用-D强制删

  32. git branch -av 显示各个分支最后一次提交情况

  33. git branch –merged[–no-merged]查看哪些分支已经被[没被]并入当前分支。对于merged的结果,如果有不标记为*的分支,可以删掉

  34. 从服务器clone代码到本地的时候,远程服务器上得master分支是origin/master,用户无法在本地修改它的内容,会在本地创建一个与origin/master一致的master分支,用户可以修改本地master的内容。只要不和服务器通信,origin/master指针不会移动。

  35. git fetch origin 可以与服务器同步:获取本地尚未拥有的数据,更新本地的数据库,移动origin/master到最新位置。

  36. git remote add teamone git@…. 添加项目的远程分支。会创建一个teamone/master分支。teamone与origin角色类似。

  37. git push origin bugfix:bugfix2 提取我的bugfix分支并更新到远程仓库的bugfix2分支

  38. git merge origin/master 合并本地的origin/master分支到当前分支。origin/master是本地不可编辑的

  39. git checkout -b serverfix origin/serverfix 可以在远程分支origin/serverfix(是本地的一个分支)的基础上分化出一个新的分支。
    从远程分支检出的本地分支,称为跟踪分支.git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据. 而在这些分支里运行git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。
    上一语句可简化为git checkout –track origin/serverfix。由git自行推断应该向哪个服务器的哪个分支推送数据。

  40. git push origin :bugfix 删除远程分支bugfix。冒号左边为空。译为提取空白然后把它变成远程分支bugfix

  41. git push origin test4:test4将本地的分支test4推到远程服务器上,且名字是test4

  42. 将一个分支整合到另一个分支的方法:merge 和rebase衍合(把另一分支的变动在当前分支重放一遍)。衍合能产生一个更为整洁的提交历史。二者得到的结果一样。

  43. git rebase –onto master server client 检出client 分支,找出client 分支和server 分支的共同祖先之后的变化,然后把它们在master 上重演一遍。接下来通过快进分支来使master合并到client(git checkout master;git merge client)。该语句不影响server分支。

  44. git rebase 主分支master 特性分支server //该语句将特性分支在主分支上重演一遍,不要求事先切换到主分支。

  45. 注意:衍合之后需要快进分支。

  46. 永远不要衍合那些已经推送到公共仓库的更新。公开的衍合会带来问题。如果把衍合当成一种在推送之前清理提交历史的手段,而且仅仅衍合那些永远不会公开的commit,那就不会有任何问题。如果衍合那些已经公开的commit,而与此同时其他人已经用这些commit 进行了后续的开发工作,那你有得麻烦了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Git笔记

标签:git

原文地址:http://blog.csdn.net/cklsoft/article/details/46661857

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!