Git(一)本地操作基础

git简介

git并不是通过文件名在数据库中存储信息的,而是通过信息的散列值。
git追踪的是内容而不是文件。

在git中,文件一共有三种状态

  • 已提交(commit):表示数据已经被安全地存入本地数据库中
  • 已修改(modified):表示已经改动了文件,但尚未提交到数据库
  • 已暂存(staged):表示对已修改的当前版本的做出了标识并将其加入下一次要提交的快照中

git的基本工作流如下

  • 修改工作目录中的文件
  • 暂存文件,将这些文件的快照加入暂存区
  • 提交暂存区中的文件,将快照永久地保存在git目录中

git设置用户身份

-> ~ git config --global user.name "yangyun"
-> ~ git config --global user.email "[email protected]"

“–global”选项是面向全局的。如果你想在某个项目中使用不同的用户名和电子邮件地址,可以在项目中使用不带“–global”选项的命令。

在工作目录中文件都处于:已跟踪(tracked)或未跟踪(untracked)。

git常见命令

# 显示常用命令的一些命令
-> ~ git

查看命令列表

# 查看Git版本号
-> ~ git --version

# 查看git子命令列表等价于git help -a
-> ~ git help --all 

-> ~ git help config

git的短长选项

# 下面的命令等价:git commit --message="Fixed a type"
-> ~ git commit -m "Fixed a type"

缩写形式-m使用了一个连字符,而长形式–message使用了两个连字符。

“–”双破折号可以分离命令行的控制部分与操作数部分。

git初始版本库

-> ~ git init

这条命令会将当前的目录,初始化为一个git仓库!最初每一个git版本库都是空的。
添加文件到版本库中:

# 添加指定的文件到版本库
-> ~ git add index.html
# 将当前目录及子目录中的文件都添加到版本库中,如果提供的参数是目录,该命令会递归地添加该目录下的所有文件
-> ~ git add .
# 显示状态信息
-> ~ git status
# 简化版
-> ~ git status -s

查看已暂存和未暂存的变更

# 工作区的内容与暂存区的内容对比
-> ~ git diff
# 查看暂存的内容与上次提交的内容比较,“--staged”与“--cached”是等同的
-> ~ git diff --staged

使用外部工具

# tool可以替换为emerge,opendiff(推荐),vimdiff3
-> ~ git difftool --tool=<tool>

提交文件

-> ~ git commit -m "xxx"
# 跳过暂存区,"-a"选项跳过暂存区
-> ~ git commit -am "xxx"

移除文件

# 文件删除
-> ~ git rm file
# 文件删除回滚
-> ~ git checkout HEAD  -- file
# 将文件从暂存区删除
-> ~ git rm --cached file

重命名文件

-> ~ git mv file_from file_to

查看日志

-> ~ git log
# 加上“-p”参数会显示出每次提交所引入的差异
-> ~ git log -p
# “-2”显示最近两次的提交
-> ~ git log -p -2
# “--stat”显示查看每个提交的简要统计信息
-> ~ git log --stat
# “--follow”选项可以显示fileA的全部历史记录,即使被修改过名称
-> ~ git log --follow fileA
git log常用选项
选项 描述
-p 按补丁格式显示每个提交引入的更改
–stat 显示每个提交中被更改的文件的统计信息
–shortstat 只显示上述–stat输出中包含“已更改/新增/删除”行的统计信息
–name-only 在每个提交信息后显示被更改的文件列表
–name-status 在上一个选项输出基础上还显示出“已更改/新增/删除”统计信息
–abbrev-commit 只显示完整的SHA-1 40位校验和字符串中的前几个字符
–relative-date 显示相对日期,而不是完整日期
–graph 展示分支和合并的历史信息
–pretty 可选格式显示提交
git log输出范围
选项 描述
-(n) 只显示最新的n次提交
–since,–after 只输出指定日期之后的提交
–until,–before 只输出指定日期之前的提交
–author 只输出作者与指定字符串匹配的提交
–committer 只输出提交者与指定字符串匹配的提交
–grep 只输出提交信息包含指定字符串的提交
-S 只输出包含“添加或删除指定字符串”的更改的提交

撤销操作

# 这样被遗忘的文件也会被提交,也会被合并到一个批次
-> ~ git commit -m "initial commit"
-> ~ git commit forgotten_file
-> ~ git commit --amend
# 文件恢复到最近提交的版本
-> ~ git checkout -- file

git分支

查看分支的指向及项目历史的分叉情况

-> ~ git log --oneline --decorate --graph --all

git分支

# 查看分支列表
-> ~ git branch
# 创建一个新的分支
-> ~ git branch testing
# 切换到指定的分支
-> ~ git checkout testing
# 创建分支,并切换到这个分支
-> ~ git checkout -b hotfix
# 删除分支
-> ~ git branch -d hotfix
# 合并分支
-> ~ git merge testing
# 每个分支上面的最新提交
-> ~ git branch -v
# 刷选已经并入当前分支的所有分支
-> ~ git branch --merged
# 刷选尚未并入的所有分支
-> ~ git branch --no-merged

变基

变基操作是把某条开发支线上的工作在另一个分支线上按顺序重现。合并操作是找出两个分支的末端,并把它们合并到一起。
注意事项:对本地尚未推送的更改进行变基操作,从而简化提交历史,但绝不能对任何已经推送到服务器的更改进行变基操作!
不要对已经存在于本地仓库之外的提交执行变基操作。

# 简单的变基操作
-> ~ git checkout hotfix
-> ~ git rebase master
-> ~ git checkout master
-> ~ git merge hotfix
# 将当前分支切换到client分支,并找出client分支和server分支的共同祖先提交,然后把自从共同祖先以来client分支上独有的工作在master分支上重现。
-> ~ git rebase --onto master server client

猜你喜欢

转载自blog.csdn.net/qq_33704186/article/details/88839033