Git 基本使用
Git简介
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。它可以帮助开发者记录项目的版本历史,方便回溯、协作开发等。
安装
-
windows
对于 Windows 用户,可以从 Git 官方网站下载安装包,下载完成后按照安装向导提示逐步完成安装。
-
mac
若使用 Homebrew,在终端输入
brew install git
即可安装。若未安装 Homebrew,也可从Git 官方网站下载对应 dmg 文件安装。
-
linux
Linux 用户(以 Ubuntu 为例),在终端执行
sudo apt-get install git
命令进行安装。
配置 Git
安装完成后,需要配置一些基本信息。
打开终端(或 Git Bash 等):
设置用户名:
git config --global user.name "Your Name"
设置邮箱:
git config --global user.email "your_email@example.com"
基本操作
初始化仓库
进入项目所在目录,在终端输入 git init
,这将创建一个本地 Git 仓库,此时项目目录下会多一个隐藏的 .git 文件夹,它包含了仓库的所有版本信息。
添加文件
首先使用 git add .
命令,它会将当前目录下所有修改的文件添加到暂存区,若只想添加某个特定文件,如 test.txt,可使用 git add test.txt
。
提交文件
文件添加到暂存区后,使用 git commit -m "提交说明"
来提交,提交说明要简洁明了,描述本次提交所做的更改内容,方便后续查看版本历史。
查看状态
随时可以用 git status
查看仓库当前状态,包括哪些文件被修改、哪些在暂存区等。
分支操作
创建分支
例如创建一个名为 dev 的分支用于开发新功能,使用 git branch dev
。
切换分支
要切换到 dev 分支,执行 git checkout dev
,也可以合并成一条命令 git checkout -b dev
,即创建并切换到新分支。
合并分支
假设在 dev 分支完成开发,要合并回主分支 master。首先切换到 master 分支 git checkout master
,然后执行 git merge dev
,如有冲突需要手动解决冲突后再提交。
远程仓库操作
关联远程仓库
如果有一个 GitHub 或其他远程代码托管平台的仓库,使用 git remote add origin [远程仓库地址]
关联,例如 git remote add origin https://github.com/your-username/your-repo.git
。
推送本地代
关联后,将本地代码推送到远程仓库,第一次推送时使用 git push -u origin master(以推送到 master 分支为例),后续直接 git push 即可。
拉取远程代码
团队协作时,若他人更新了远程仓库,需要拉取最新代码,使用 git pull origin master (同样以 master 分支为例)。
版本回退
查看历史版本
使用 git log 可以查看提交历史,记录了每次提交的哈希值、作者、时间、提交说明等信息。
回退到指定版本
找到要回退到的版本哈希值,执行 git reset –hard [版本哈希值],即可回退到该版本,但要谨慎操作,回退后后续提交记录将丢失,若只是想撤销暂存区的修改,可用 git reset HEAD [文件路径]。
标签操作
打标签
当项目达到某个重要里程碑,如发布 v1.0 版本,可使用 git tag -a v1.0 -m “版本 1.0 发布” 来打标签标记该版本。
查看标签
执行 git tag 可查看已有标签。
推送标签
如果要将标签推送到远程仓库,使用 git push origin [标签名],如 git push origin v1.0。
小技巧
如何让 git 命令的输出支持中文
-
设置 Git 的 core.quotepath 选项为 false,这样 Git 就不会对非 ASCII 字符的文件名进行 quote,从而可以正确显示中文。
git config --global core.quotepath false
-
如果你使用的是 Windows 系统,还需要设置 i18n.commitEncoding 和 i18n.logOutputEncoding 为 utf-8,以确保提交信息和日志输出的编码正确
git config --global i18n.commitEncoding utf-8 git config --global i18n.logOutputEncoding utf-8
如何让 git 暂时忽略本地的更改
git update-index --assume-unchanged <文件路径>
git update-index --no-assume-unchanged <文件路径>
git update-index --skip-worktree <文件路径>
git update-index --no-skip-worktree <文件路径>