git攻略        by 李春城chuncheng.li@dianping.com
git基本概念          暂存区          (stage) 暂存区:为了更高效,更快速的完成工作 稍后具体介绍各个命令的时候在介绍这三个的原理
目   • git前奏录   • git基本概念      • 配置、初化化      • 基本命令      • 暂存区      • 检出、重置    • git进阶      • 冲突解决      • 分支      • 标签、里程碑 ...
git前          远程奏          办公      重置   爱上                 .git目录      提交           git           每日           备份
配置:git config配     git config –-system key.value {/etc/config} 优先级最低置     git config –-global key.value {~/.gitconfig}文   ...
git支持的协议初      ssh(scp)githttp(s)地地协议始   git init化   git clone <repository> <local directory>       文件+版本库均检出,是一个对等工作区,只能P...
git add基       -i本       -u        -A命   git status令       位于第二列红色的M(红二):工作区—暂存区        第一列绿色的M:暂存区-版本库        git status ...
基   git clean –fd 清除工作区未加入版本库的非跟踪文件和目录本   git checkout . 用暂存区内容刷新工作区命   git commit –a 对本地所有变更文件(修改、删除)提交令   git cat-file –...
master 代表分支master中最新的提交(分支名不一定是master版     refs/heads/master 或 heads/master本   HEAD 最近的一次提交号   HEAD^ 最近两个提交 || HEAD^1    H...
HEAD指针重      HEAD指针永远指向当前分支的最近一次提交置      more .git/refs/heads/master(假如当前分支在master分支)命      可以人为的改变HEAD指针 git reset    git...
检   危险命令出    git checkout branch – filename       维持HEAD不变,用branch指向的filename替换暂存区和工作区的相应文命      件令   git checkout branch ...
冲突一:修改不同的文件冲    有其他用户已经push,会push失败,除非强制push -f突     解决:先pull ( pull = fetch + merge)     说明:可以禁用强制push解      git config r...
冲突四:一个用户更改了文件名,另一个用户更改了文件的内容冲    解决方案同冲突一,可以用pull自动合并突   冲突五:任何软件都无法解决的问题     一个用户把函数名改了或者把函数的函数体改成了另外的功能,另一个解    用户还是在用这个...
git tag –n<num>显示<最多num行>里程碑标   git describe 显示最近的一个里程碑签   git tag <tagname> [<ID>] 创建轻量级里程碑    git tag –a <tagnme> [<ID>]...
git branch 显示当前所有的分区,*号表示当前分区分   git branch <branchname> 创建分区支   git branch <branchname> <start-point>    git branch –d <b...
Upcoming SlideShare
Loading in...5
×

Git使用入门

1,184

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,184
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Git使用入门

  1. 1. git攻略 by 李春城chuncheng.li@dianping.com
  2. 2. git基本概念 暂存区 (stage) 暂存区:为了更高效,更快速的完成工作 稍后具体介绍各个命令的时候在介绍这三个的原理
  3. 3. 目 • git前奏录 • git基本概念 • 配置、初化化 • 基本命令 • 暂存区 • 检出、重置 • git进阶 • 冲突解决 • 分支 • 标签、里程碑 3
  4. 4. git前 远程奏 办公 重置 爱上 .git目录 提交 git 每日 备份
  5. 5. 配置:git config配 git config –-system key.value {/etc/config} 优先级最低置 git config –-global key.value {~/.gitconfig}文 git config key.value {.git/config} 优先级最高件 一般的配置项: user.name user.email alias.别名 git config alias.ci “commit –u” color.ui true git config –e –-global git config --unset key.value 在哪可查看远程版本路径?
  6. 6. git支持的协议初 ssh(scp)githttp(s)地地协议始 git init化 git clone <repository> <local directory> 文件+版本库均检出,是一个对等工作区,只能Pull,不能push版 git clone –bare <repository> <local directory.git>本 只检出版本库(祼库)库 git clone –mirror <repository> <local directory.git> 与bare区别:在<repository>可以fetch <local repository> 注意:创建一个祼版本库后,第一次用git push会报错,因为远程 版本库还没有任何分支,所以第一次提交命令后面要跟上一个分支 号 eg: git push /path/to/repo/nullrepo.git master
  7. 7. git add基 -i本 -u -A命 git status令 位于第二列红色的M(红二):工作区—暂存区 第一列绿色的M:暂存区-版本库 git status -s 精简输出 git status –s –b 查看当前工作分支 (git branch) git diff git diff 工作区—暂存区 git diff HEAD 工作区—版本库 git diff –cache 暂存区—版本库 git diff –staged 暂存区—版本库 比较文件输出的一堆内容是什么
  8. 8. 基 git clean –fd 清除工作区未加入版本库的非跟踪文件和目录本 git checkout . 用暂存区内容刷新工作区命 git commit –a 对本地所有变更文件(修改、删除)提交令 git cat-file –t <版本> 查看类型 tree blob commit git cat-file –p <版本> 查看版本提交的内容
  9. 9. master 代表分支master中最新的提交(分支名不一定是master版 refs/heads/master 或 heads/master本 HEAD 最近的一次提交号 HEAD^ 最近两个提交 || HEAD^1 HEAD^^ 最近三次提交 || HEAD^2 a34690 a34690^^ || A34690~2 :访问 HEAD:path/to/file a34690^3:path/to/file :path/to/file 暂存区中的文件
  10. 10. HEAD指针重 HEAD指针永远指向当前分支的最近一次提交置 more .git/refs/heads/master(假如当前分支在master分支)命 可以人为的改变HEAD指针 git reset git reset –hard 版本号 [-- file]令 重置三个区域到版本号,是最危险的操作,会删除local的多余文件 git reset –soft 版本号 [– file] 改变HEAD指针,不改变local和stage git reset –mixed 版本号 [-- file] 改变HEAD指针,重置stage,不改变Local (默认操作) 恢复—hard的结果 git reflog show master | head 6 git reset –hard master@{3} 哈唏值是怎么计算来的?
  11. 11. 检 危险命令出 git checkout branch – filename 维持HEAD不变,用branch指向的filename替换暂存区和工作区的相应文命 件令 git checkout branch 检出branch分支,更新HEAD以指向branch分支,更新暂存区和工作区 git checkout –b branch start_point git checkout 汇总显示工作区、暂存区与HEAD的差异 git checkout – filename 用暂存区中filename文件来覆盖工作区中的filename文件(危险) git checkout . 或 git checkout -- . 会取消所有本地的修改,相当于暂存区的所有文件直接覆盖本地文件
  12. 12. 冲突一:修改不同的文件冲 有其他用户已经push,会push失败,除非强制push -f突 解决:先pull ( pull = fetch + merge) 说明:可以禁用强制push解 git config receive.denyNonFastForwards true决 merge默认会自动提交,如果不想commit,可以提供—no-commit 冲突二:修改相同文件的不同区域 同冲突一方案解决 git blame filename可以查看每一行是谁改的 冲突三:修改相同文件的相同区域 手工编辑完成冲突解决 git add -u <<<<<<(七个小于号) 我自己的版本 =======(七个等于号) 他人更改的版本 >>>>>>>(七个大于号) 图形工具完成冲突解决 git mergetool 需要安装 以下之一 kdiff3 meld tortoisemerge araxis A: 共同祖先版本 B: 我的版本 C: 他人的版本
  13. 13. 冲突四:一个用户更改了文件名,另一个用户更改了文件的内容冲 解决方案同冲突一,可以用pull自动合并突 冲突五:任何软件都无法解决的问题 一个用户把函数名改了或者把函数的函数体改成了另外的功能,另一个解 用户还是在用这个用户,这是人为造成的bug,git也无能为力。决 冲突六:两个或者多个用户同时修改文件名 解决方案,共同商定用哪个文件名 命令行方式: git rm 删除不要的文件 git add 最后的文件 git commit 问答式: git mergetool 冲突的配置: merge.conflictstyle 设置标记风格,默认merge || diff3 merge提供本地和他人的代码 diff3提供本地、祖先、他人的代码 merge.tool 配置图形化工具
  14. 14. git tag –n<num>显示<最多num行>里程碑标 git describe 显示最近的一个里程碑签 git tag <tagname> [<ID>] 创建轻量级里程碑 git tag –a <tagnme> [<ID>] 创建带说明的里程碑 git tag –m <msg> <tagname> [<ID>] 创建带说明的里程碑 git tag –s <tagname> [<ID>] 创建带签名的里程碑 git tag –u <key-id><tagname> [<ID>] 创建带签名的里程碑 git tag –d <tagname> 删除里程碑 说明: 里程碑一般只存在于本地 可以用git push origin mytag 显示推送到版本库以共享给他人 用户获取里程碑 git pull git pull origin refs/tags/mytag:refs/tags/mytag
  15. 15. git branch 显示当前所有的分区,*号表示当前分区分 git branch <branchname> 创建分区支 git branch <branchname> <start-point> git branch –d <branchname> 删除分区(已经有过合并不能删除) git branch –D <branchname> 强制删除分区 git branch –m <oldbranchname> <newbranchname> 重命名分区 git branch –M <oldbranchname> <newbranchname> 强制重命名分区 git merge <branchname>合并到当前分区
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×