haotech / Learning

4 stars 0 forks source link

第五期:Git 分享 #5

Closed alphatr closed 3 years ago

alphatr commented 8 years ago

资料:

Pro Git

提前思考:

  1. Git 和 SVN 的区别在哪里?
  2. 怎么理解 git 的 rebase 操作?
  3. git 为什么需要 add 后才能 commit?
  4. git reset 和 checkout 有什么区别?

    大纲

  5. 对比 SVN 对 git 进行介绍
  6. 基础操作
    • git commit
    • git add
  7. 分支操作
    • git checkout
    • git merge
    • git rebase
  8. 远程操作
    • git fetch
    • git pull
    • git push
  9. 工作流介绍
  10. 一些工具
    • git stash
    • git log
    • tig

      目标

  11. 大家讨论下 git 在工作中的最佳实践;
  12. 提供一个思路,让大家对 git 有更深入的理解;
alphatr commented 8 years ago

基础操作

git 的三棵树[工作目录,HEAD(主要的版本控制),stage(索引树,暂存树)]

git add/git stage

将工作目录的文件添加到 stage 树上(不完整的树);

git add [file/path]

git commit

将 stage 树 添加到 head 树上

git commit -a -m --amend 常用的三个参数

工作目录的操作

git checkout // 撤回未提交,未暂存的修改

暂存区的操作

git add // 添加文件到暂存区 git reset // 撤回添加到暂存区(不会修改工作目录)

HEAD 的操作

git commit // 将 stage 区添加到 head git reset HEAD~1 // 从版本库撤回到工作区,撤回 git commit -a; git reset --soft HEAD~1 // 从版本库撤回到暂存区,撤回 git commit; git reset --hard HEAD~1 // 从版本库撤回并抛弃修改

分支操作

HEAD(当前分支,this)->master->023AF4D4

git branch 新建一个分支 git checkout 切换分支

git checkout -b 新建分支并切换到

分支的合并

git merge // 产生新的提交 git rebase // 不产生新的提交

远程分支

origin,不会随着提交更新,或者不会随着人为改动;

origin // 远程仓库名称

origin/master // 本地创建的指向远程 master 的指针 master // 本地的分支

git fetch // 拉取远程数据,并重设指向远程 master 的指针 git push // 将本地的数据推到远程;

git pull = git fetch + git merge origin/master

git pull --rebase = git fetch + git rebase origin/master

git push origin master:develop // 创建远程 develop 分支 git push origin test:test // 本地分支推送到远程 git checkout --track origin/develop // 拉去远程已有分支并切换到 git push origin :develop // 删除远程 develop 分支

git remote prune origin 清理本地被删除的远程分支 git remote -v 查看远程分支

http://wiki.nav.corp.qihoo.net/pages/viewpage.action?pageId=1769594

一些工具

tig // git 命令行工具 git stash git rebase -i // 交互模式更改提交历史