Git

版本控制(Git) · the missing semester of your cs education (missing-semester-cn.github.io)

基本命令

git init

  • 创建一个git仓库

    git status

  • 查看文件状态

  • -s状态简览

git add

  • 跟踪一个文件
  • 把已跟踪的文件放入暂存区
  • 合并时把有冲突的文件标记为已解决状态

git reset HEAD filename

  • 取消暂存

git diff

  • 比较工作目录中当前文件和暂存区域快照之间的差异。也就是修改之后还没有暂存起来的变化内容

git diff --staged git diff --cached

  • 比对已暂存的文件与最后一次提交的文件的差异

.gitignore

  • 忽略文件配置文件,

git commit git commit -a git commit --amend

  • 提交更新,-a表示把所有已经跟踪过的文件暂存起来一起提交,跳过使用暂存区。--amend表示重新提交。

git rm -f

  • 强制删除。

git mv file_from file_to

  • 重命名、移动文件。

git log -p -2 --stat --graph

  • 查看历史提交记录,显示差异,显示最近两次提交。--stat参数输出带有简略统计信息。--graph以ascii图形显示。
  • gitignore

远程仓库

git remote show rename remove

  • 查看远程仓库,show查看更多信息,rename重命名,remove移除远程仓库。

git remote add <shortname> <url>

  • 添加远程仓库

git fetch <remote>

  • 下载数据到本地仓库,不会自动合并

git pull <remote>

  • 下载数据到本地仓库,自动合并

git push <remote> <branch>

  • 推送到远程仓库

打标签

  • 轻量标签:某个特定提交的引用
  • 附注标签:一个完整对象

本地

git tag

  • 查看标签

git show <TagName>

  • 显示特定标签信息

git tag -a <Version> -m <Message>

  • 附注标签
  • 后期打标签则再参数后加入sha-1散列值

git tag <Version>

  • 轻量标签
  • 后期打标签则再参数后加入sha-1散列值

git tag -d <tagname>

  • 删除标签

远程

git push origin <tagname>

  • 共享标签

git push <remote> --delete <tagname>

  • 移除远程标签

分支

  • Git保存的不是文件的变化或者差异,而是一系列不同时刻的快照
  • Git提交对象包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针

  • Git的分支,本质上仅仅是指向提交对象的可变指针。