git 基础命令小结

Git 是一个内容寻址文件系统。 即Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索(retrieve)该内容。

git基础

git init

初始化git仓库,即建立.git目录。.git包含了几乎所有 Git 存储和操作的对象。 如若想备份或复制一个版本库,只需把这个目录拷贝至另一处即可.目录结构如下图:
在这里插入图片描述

git clone [url]

从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。
git clone url 或者 git clone url locname locname是创建的本地仓库的名字,若不指定则默认与远程仓库同名。

git status

查看文件状体,每个文件不外乎四种状态:未跟踪,未修改,已修改,暂存
添加或修改.gitignore文件,可以使某些文件不出现在未跟踪列表里
git status 或者git status --short或者git status -s,加short或-s表示状态概览。

git add

添加文件到缓存, git add filenamegit add filename1 filename2 ...git add -ugit add . 或或 git add *.cpp 等等
git reset filename 取消暂存
git checkout filename 取消修改,恢复到最近一次的commit(这个操作是不可恢复的,因为filename尚未提交到git)

git diff

未暂存部分的具体改变
git diff --staged 可查看已暂存部分的改变
git diff filename 查看某文件的修改
git difftool -d object1 object2可图形界面查看不同,object1,2为commit对象或者分支对象

git commit

git commit - m "remark" 提交暂存中的内容
git commit -a -m "remark" = git add -u+git commit -m "remark"
git commit --amend 修改上次提交

每次commit都会对应一个commit对象,该对象中会包含一个(其实也不一定是一个,merge时也会生成新的commit对象,那时的父对象将有两个)指向父对象的指针,和还有一个树对象,这个树对象将包含本次提交的所包含的文件及目录的blob。

  • 下图中git log -1 查看最新一次commit ,e2172a***
  • git cat-file -p e2172a(此处只用写5位即可,也可以多写)可以查看对象内容。 可以看到commit对象中包含一个tree,一个parent。
  • 继续查看tree,可以看到完整的目录结构。

在这里插入图片描述
也可以通过命令git cat-file -p master^{tree}查看最新一次提交的树对象,结果是一样的,见下图。
在这里插入图片描述

git rm

git rm filename从暂存区移除文件。
git rm --cached filename 从暂存区移除,但是不从工作目录删除(用于处理忘记加到.gitignore中的文件们)

git mv

git mv file_from file_to = mv file_from file_to+git rm file_from+git add file_to

git log

git log 查看提交历史
git log --stat 查看提交历史,并显示统计信息
git log -p 查看提交历史,并显示提交差异
git log -6 查看最近六次提交历史
git log --graph 查看提交历史,并图形化显示分支和合并,比较有用的一个命令

git remote

git remote查看远程仓库
git remote -v 查看远程仓库,并显示url
git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定shortname作为远程仓库的简写。

git fetch 与git pull

git fetch 将数据拉取到你的本地仓库,并不会自动合并或修改你当前的工作,git pull会进行合并操作。

git push

git push origin master 将master分支推送到origin服务器。

git tag

git tag列出已有标签
git tag -a v1.0 -m "version 1.0" 打一个附注标签
git tag v1.0 打一个轻量标签

分支

git branch b1 新建分支b1
git checkout b1 切换到b1分支
git checkout -b b1 = git branch b1+git checkout b1
git merge b2 将b2 merge到当前分支

猜你喜欢

转载自blog.csdn.net/iceboy314159/article/details/102766116