Date
Nov. 21st, 2024
 
2024年 10月 21日

Post: Git : 基本指令

Git : 基本指令

Published 12:11 Nov 02, 2014.

Created by @ezra. Categorized in #Version Control, and tagged as #Git.

Source format: Markdown

Table of Content

这一篇简单介绍下 Git 中基本的指令。

基本指令

  • git status: 查看 Git 文件状态,在Git 中文件有三种状态:

    • Untracked: 未追踪

    • Tracked & Staged: 追踪未暂存

    • Tracked & Unstaged: 暂存

  • git add: 添加文件(夹)

  • git commit: 提交暂存状态的文件,可以使用 -m 添加日志信息

  • git diff: 比较未暂存文件和当前文件的差异

  • git diff –cached: 比较暂存文件和上次提交的文件的快照的差异

  • git rm file: 将文件从追踪列表移除并删除文件,如果文件已经是暂存状态则需要 -f 选项

  • git rm —cached file: 移除追踪但不删除文件

  • git log: 查看提交历史

    • -p: 可以展开提交的内容的差异

    • -num: 显示最近 num 次更新

  • git commit —amend: 将此次提交合并到此前最后一次提交

  • git checkout file: 撤销对未暂存文件的修改,恢复到修改前版本

  • git reset HEAD file: 取消暂存区域文件的修改,恢复到修改未暂存状态

  • git revert HEAD: 对于已经推送(push)的文件,创建一个撤销上次提交的新提交

  • git reset HEAD^: 恢复到上一个版本,使修改处于未暂存状态

    • —soft: 恢复到上一个版本,使修改处于暂存状态

    • —hard: 恢复到上一个版本,丢弃修改

  • git clone url: 克隆原始的远程仓库,完成后创建默认为 origin 的远程仓库

  • git remote -v: 显示远程仓库的信息

  • git remote add name url: 添加远程仓库

  • git fetch (remote-name): 从远程仓库拉取本地仓库中没有的数据

  • git push (remote-name) (branch-name): 推送到远程仓库的分支

  • git remote show (remote-name): 显示远程仓库的详细信息

  • git remote rm (remote-name): 删除远程仓库

本地分支

之前介绍过,Git 中有一个 HEAD 指针(.git/HEAD),它指向正在工作的本地分支的。

  • git branch branch-name: 创建本地分支,会产生指向当前 commit 对象的指针

  • git checkout branch-name: 切换分支,将 HEAD 指针指向新分支,将工作目录文件切换为新分支指向的快照内容

    • 注意: 切换分支前务必要先提交需要保留的修改
  • git merge branch-name: 将指定分支合并到当前分支,如果存在冲突会等待用户解决冲突后由用户自己提交

  • git branch -d branch-name: 删除分支

  • git branch (-v|—merged|—no-merged): 罗列分支

远程分支

  • git fetch (远程仓库名) (分支名): 同步远程仓库中数据到本地,如果不指定远程仓库名和分支名则同步所有远程仓库所有分支

  • git push (远程仓库名) (本地分支名):(远程分支名): 将指定本地分支推送到指定远程仓库的指定分支,如果省略本地分知名则推送当前分支

  • git checkout -b (本地分支名) (远程仓库名/分支名): 新建本地分支并从远程分支检出到该本地分支,称为跟踪分支

    • 使用 git clone 时会自动创建 master 本地分支跟踪远程 master 分支

    • 使用 git push 时会自动选择推送的服务器和分支

  • git pull: 从远程拉取更新内容,实质上是自动执行 git fetchgit merge

  • git push (远程仓库名) :(远程分支名): 推送到远程分支

  • git rebase branchname: 将指定分支里提交的改变在当前分支里重做,能产生比 merge 更为整洁的提交记录

    • 注意: 不要再分支中的提交对象发布到远程公共仓库后使用此操作
Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询