git -> 分布式版本管理系统

git 是一个分布式版本控制软件,最初由 Linus Torvalds (林纳斯·托瓦兹) 创作,于 2005 年以 GPL 许可协议发布。最初目的是为了更好地管理 Linux 内核开发而设计

git 是用于 Linux 内核开发的版本控制工具。与 CVS、Subversion(svn)一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。git 的速度很快,这对于诸如 Linux 内核这样的大项目来说自然很重要。git 最为出色的是它的合并追踪(merge tracing)能力

git 是用 C 语言开发的,以追求最高的性能

# git 的安装

yum -y install git(CentOS)

apt -y install git(Debian)

brew install git(macOS)

https://git-scm.com/download/win(win 下载 Git Bash 的链接)

# git 配置用户名和邮箱,git config --global --unset user.name 可取消全局用户名配置

# 设置 git 的 PS1 环境变量

Bash

在 ~/.bash_profile 文件中添加如下内容并执行 source ~/.bash_profile ,其中 /usr/local/etc/bash_completion.d/git-prompt.sh 文件定义了 __git_ps1 等相关函数,并且不同操作系统安装的文件路径和文件名可能不一样,因此要改为对应的文件路径和文件名

source /usr/local/etc/bash_completion.d/git-prompt.sh

export GIT_PS1_SHOWDIRTYSTATE=true

export GIT_PS1_SHOWUNTRACKEDFILES=true

export PS1='\[\033[01;31m\][\[\033[01;32m\]\u\[\033[01;35m\]@\[\033[01;33m\]\h \[\033[01;34m\]\W$(__git_ps1 "(%s)")\[\033[31m\]\[\033[01;31m\]]\[\033[01;36m\]\$\[\033[00m\] '

ZSH

# 安装 ZSH 和插件

 brew install zsh zsh-autosuggestions zsh-syntax-highlighting

在 ~/.zshrc 文件中添加如下内容并执行 source ~/.zshrc

setopt PROMPT_SUBST

__git_ps1() {

  local branch_name

  if branch_name=$(git symbolic-ref --short HEAD 2>/dev/null); then

    printf "$1$branch_name$2"

  fi

}

 

plugins=( 

    git

    zsh-autosuggestions

    zsh-syntax-highlighting

)

 

autoload -Uz compinit

compinit

source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh

source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

 

source /usr/local/etc/bash_completion.d/git-prompt.sh

export GIT_PS1_SHOWDIRTYSTATE=true

export GIT_PS1_SHOWUNTRACKEDFILES=true

export PS1='%F{green}%n%f@%F{magenta}%m%F{blue} %~%F{red}$(__git_ps1 " (%s)") %F{cyan}$%f '

效果图如下:

# git 常用的是以下 6 个命令:git clonegit pushgit add 、git commitgit checkoutgit pull

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库

 

# 初始化 git 版本库(设置 git 的 PS1 环境变量后终端就会显示代码分支和 git 仓库的状态信息),git 仓库的状态信息记熟后可避免频繁敲 git status 命令,常见的 git 仓库的状态信息如下:

`#` 表示当前分支是干净的(clean),这意味着当前工作目录中的所有更改都已经提交或暂存,没有未跟踪的文件

`%` 表示当前分支存在未跟踪的文件(untracked files),这意味着在当前工作目录中有一些文件没有添加到 git 仓库中

`*` 表示当前分支存在未提交的更改(changes to be committed),这意味着在当前工作目录中有一些已经暂存但尚未提交的更改

`+` 表示当前分支存在未暂存的更改(changes not staged for commit),这意味着在当前工作目录中有一些已经修改但尚未暂存的更改

`$` 表示当前分支与上游分支存在差异(diverged),这意味着当前分支的提交历史与上游分支的提交历史有所不同

`=` 表示当前分支与上游分支是完全一致的(up to date),这意味着当前分支的提交历史与上游分支的提交历史完全相同

 # 工作区 git add -> 暂存区 git commit -> 本地仓库

git log 命令的 --pretty 参数支持多种参数,分支的 commit 较多时可选择对应的参数来查看

# git restore file 表示从工作区撤销文件的改动,恢复文件至改动前的状态

 # git restore --staged file 表示从暂存区撤销添加的代码,即撤销 git add 操作

 # git commit -a file == git add file + git commit 

 # git reset --hard HEAD^ 表示代码回滚到上个版本,回滚到上两个版本使用 git reset --hard HEAD^^

 git reflog 表示查看回滚日志

 下图中也可使用 git reset --hard HEAD@{1} 或 git reset 3ce7492 回到 “my first modification” 

# git 标签管理(commit 在添加 tag 后可通过 tag 进行回滚)

 # git 分支管理(git checkout -b devan-devops == git switch -c devan-devops == git branch devan-devops + git switch devan-devops)

posted @ 2023-08-02 15:38  demoduan  阅读(20)  评论(0编辑  收藏  举报