跳转到主要内容

书籍

Git 教程

讲解 Git 版本控制的基本概念与常用操作:提交、分支、合并与协作流程。适合日常开发上手,也可当作速查。

35 页更新于 2 年前

开始阅读
CC BY-SA 3.0

目录35

  1. 01 Git git是一种源码管理系统(source code management,缩写为SCM)。它对当前文件提供版本管理功能,核心思想是对当前文件建立一个对象数据库(object database),将历史版本信息存放在这... 9 年前
  2. 02 分支 分支(branch)是 Git 最重要的概念之一,几乎所有 Git 操作流程都离不开分支。 本质上,分支只是一个动态指针(或者称为标签),指向某个提交(commit)。所谓“动态”,指的是当你切换到当前分支,生成新... 3 年前
  3. 03 内部实现 .git 目录 版本管理的所有信息,保存在项目的 .git目录之中。如果没有这个目录,Git 就会认为这个仓库没有建立版本管理,必须进行初始化。 git init命令的主要作用,就是建立 .git目录。 .git/... 8 年前
  4. 04 Git的操作 新建代码库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码历史 $ git ... 9 年前
  5. 05 参考链接 Andy Jeffries, 25 Tips for Intermediate Git Usersi- Mark Lodato, 图解 Git 9 年前
  6. 06 标签 推送 标签必须单独推送。也就是说, git push命令默认不会推送标签,必须使用 --tags参数。 $ git push && git push --tags 上面的命令先推送新的 commit,成功后再单独推... 8 年前
  7. 07 git add 概述 git add命令用于将变化的文件,从工作区提交到暂存区。它的作用就是告诉 Git,下一次哪些变化需要保存到仓库区。用户可以使用 git status命令查看目前的暂存区放置了哪些文件。 # 将指定文件放入暂... 8 年前
  8. 08 git branch git branch是分支操作命令。 # 列出所有本地分支 $ git branch # 列出所有本地分支和远程分支 $ git branch -a (1)新建一个分支 直接在 git branch后面跟上分支名,... 2 年前
  9. 09 git cat-file git cat-file命令显示一个Git对象文件的内容。 $ git cat-file -p aaa96 p参数表示以易于阅读的格式显示。 9 年前
  10. 10 git checkout git checkout命令有多种用途。 (1)用来切换分支。 $ git checkout 上面命令表示回到先前所在的分支。 $ git checkout develop 上面命令表示切换到 develop分支。... 5 年前
  11. 11 git cherry-pick 对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。 这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并( git merge)。另一种情况是,你只需要部分代码变动(某几个提交)... 6 年前
  12. 12 git clone git clone命令用于克隆远程分支。 $ git clone alpha delta --bare 上面命令表示将alpha目录(必须是git代码仓库),克隆到delta目录。bare参数表示delta目录只有... 9 年前
  13. 13 git commit-tree 根据一个树对象,生成新的commit对象。 $ git commit-tree 16e19f -m “First commit” 9 年前
  14. 14 git commit git commit命令用于将暂存区中的变化提交到仓库区。 -m参数用于指定 commit 信息,是必需的。如果省略 -m参数, git commit会自动打开文本编辑器,要求输入。 $ git commit -m... 8 年前
  15. 15 git diff git diff命令用于查看文件之间的差异。 # 查看工作区与暂存区的差异 $ git diff # 查看某个文件的工作区与暂存区的差异 $ git diff file.txt # 查看暂存区与当前 commit ... 9 年前
  16. 16 git hash-object git hash-object命令计算一个文件的git对象ID,即SHA1的哈希值。 $ echo "hello" | git hash-object --stdin $ echo "hola" | git has... 9 年前
  17. 17 git init git init命令将当前目录转为git仓库。 它会在当前目录下生成一个.git子目录,在其中写入git的配置和项目的快照。 9 年前
  18. 18 git log git log命令按照提交时间从最晚到最早的顺序,列出所有 commit。 # 列出当前分支的版本历史 $ git log # 列出某个文件的版本历史,包括文件改名 $ git log --follow [file... 8 年前
  19. 19 git ls-files # 列出没有被.gitignore忽视的文件 $ git ls-files --other --ignored --exclude-standard 9 年前
  20. 20 git merge 将当前分支合并到指定分支。 $ git merge develop 将当前分支与develop分支合并,产生的新的commit对象有两个父节点。 如果“指定分支”本身是当前分支的一个直接子节点,则会产生fast-f... 9 年前
  21. 21 git pull # 合并指定分支到当前分支 $ git pull . topic/branch 即使当前分支有没有 commit 的变动,也可以使用 git pull从远程拉取分支。 9 年前
  22. 22 git rebase git rebase 将当前分支移植到指定分支或指定commit之上。 $ git rebase -i <commit> 互动的rebase。 $ git rebase -i master~3 命令行参数 --au... 8 年前
  23. 23 git remote 为远程仓库添加别名。 $ git remote add john git@github.com:johnsomeone/someproject.git # 显示所有的远程主机 $ git remote -v # 列... 9 年前
  24. 24 git reset git reset命令用于将当前分支指向另一个位置。 # 将当期分支的指针倒退三个 commit, # 并且会改变暂存区 $ git reset HEAD~3 # 倒退指针的同时,不改变暂存区 $ git rese... 9 年前
  25. 25 git restore git restore是 Git 2.23 版本新增的命令,用于恢复文件,可以替代 git checkout的部分功能。 $ git restore -- test.txt 上面命令将从暂存区恢复 test.txt... 5 年前
  26. 26 git rev-parse 显示某个指示符的SHA1哈希值。 $ git rev-parse HEAD 6 年前
  27. 27 git revert git revert命令用于撤销commit。 $ git revert <commitID> 9 年前
  28. 28 git rm git rm命令用于删除文件。 解除追踪某个文件,即该文件已被 git add添加,然后抵消这个操作。 $ git rm --cached <fileName> 9 年前
  29. 29 git show git show命令用于查看commit的内容 # 输出某次提交的元数据和内容变化 $ git show [commit] $ git show 12a86bc38 # By revision $ git show... 9 年前
  30. 30 git stash git stash命令用于暂时保存没有提交的工作。运行该命令后,所有没有commit的代码,都会暂时从工作区移除,回到上次commit时的状态。 它处于 git reset --hard(完全放弃还修改了一半的代码... 9 年前
  31. 31 Git switch git switch是 Git 2.23 版本新增的命名,用来切换分支,跟 git checkout的作用类似,但有更好的语义。 $ git switch develop 上面命令切换到 develop 分支。 如... 5 年前
  32. 32 git tag git tag命令用于为 commit 打标签。Tag 分两种:普通tag和注解tag。只有annotated tag 才會產生 object。 $ git tag tmp # 生成.git/refs/tags/t... 4 年前
  33. 33 git update-index 将工作区的文件加入缓存区域。 $ git update-index --add --cacheinfo \ 100644 5c1b14949828006ed75a3e8858957f86a2f7e2eb hola.... 9 年前
  34. 34 git update-ref git update-ref命令用于更新一个指针文件中的Git对象ID。 $ git update-ref refs/heads/master 107aff 9 年前
  35. 35 git write-tree git write-tree命令用于根据当前缓存区域,生成一个树对象。 $ git write-tree 9 年前