Skip to content

git 版本控制使用#

  • 优先使用可视化工具,命令行指令谨慎使用
  • vscode 插件
    • codezombiech.gitignore
    • donjayamanne.githistory
    • mhutchie.git-graph

git 安装#

  • linux : apt install git

创建 git init#

  • 初始化当前工作目录 : git init
    • 初始化后,当前目录下会多一个.git的目录,这个目录是git来跟踪管理版本库的。

添加文件 git add#

# 添加单个文件
$ git add readme.txt

# 添加所有文件
$ git add *

注意:建议将默认编码设置为UTF-8,文件格式都转为UTF-8。


提交 git commit#

git commit -m "wrote a readme file"

-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样就能从历史记录里方便地找到改动记录。


状态查看 git status#

# 掌握仓库当前的状态
git status

# 查看修改内容
git diff

# 比较工作区与最新本地仓库之间的差异
git diff HEAD

# 比较HEAD与 指定tag或commit 之间的差异
git diff --stat 7-5-commit HEAD 

提示:查看状态时按q键退出浏览。


远程仓库操作 git remote#

# 查看远程仓库位置
$ git remote -v

# 添加远程仓库地址
$ git remote add origin git@github.com:Ts-sound/test.git

# 删除远程仓库地址
$ git remote rm origin

# 推送到远程仓库
$ git push -u origin master

# 强制推送(谨慎使用)
$ git push -u origin master -f

注意master为要推送的分支名称(也可能是main)。


克隆远程仓库(SSH)#

  1. 配置本机用户信息
git config --global user.name "Ts-sound"
git config --global user.email "1564264931@qq.com"
  1. 生成SSH密钥
ssh-keygen

执行该命令后,依据提示 执行生成密钥对,再将 公钥 id_rsa.pub 添加到 github -> setting -> SSH and GPG keys

  1. 克隆仓库
git clone git@github.com:Ts-sound/test.git

标签管理 git tag#

# 添加标签
$ git tag -a v1.0 -m "description"

# 删除标签
$ git tag -d v1.0

# 查看某个历史版本
$ git checkout v1.0

# 将某个历史版本中某个文件检出
$ git checkout v1.0 -- main.c

拉取远程更新#

# 拉取远程仓库内容
$ git pull origin master

问题解决#

Git GUI 显示乱码#

解决方案:在GUI文本窗口中右击 -> Encoding -> Unicode(UTF-8)

Git Bash 中文乱码#

git config --global core.quotepath false

分支管理#

创建空分支#

# 创建孤立分支(空分支)
git checkout --orphan dev1

# 从当前HEAD创建新分支(包含历史)
git checkout -b dev2

从Tag创建分支#

创建一个名为new-feature的分支,起点是标签v1.2.0指向的提交:

git checkout -b new-feature v1.2.0

配置设置#

# 设置git push时推送到同名远程分支
git config --global push.default current

# 设置git pull时拉取同名远程分支
git config --global pull.default current

高级操作#

重置所有未提交的改动#

# 重置工作区和暂存区的所有改动
git reset --hard HEAD

Git归档#

# 将当前HEAD (或指定tag,commit) 创建为zip归档
git archive --format zip --output project.zip HEAD

git archive --format=tar.gz -o latest.tar.gz HEAD