完成本课程后,学习者将能够:
1、创建裸仓库,本地仓库诞生
所有的最简单的Git操作都是从一个裸仓库的方式演变过来的,所以学习Git的第一步要创建本地仓库 ( Local Repository ),使用git init project
命令创建的就是你的本地仓库了,位于你的电脑上,存储所有版本历史记录。
[git@bogon project]$ ll -a
total 0
drwxrwxr-x. 3 git git 18 Oct 10 08:58 .
drwx------. 8 git git 207 Oct 10 08:58 ..
drwxrwxr-x. 7 git git 119 Oct 10 08:58 .git
2、Git初始化
要对裸仓库进行初始化,Git 提交(commit
)时必须关联用户信息,用于标识提交者,是团队协作和代码追溯的基础。安装完成后,需要配置用户名和邮箱(用于提交代码时标识身份),在终端 / 命令行中运行:
git config --global user.name "stark" # 例如:"stark"
git config --global user.email "stark@126.com" # 例如:"stark@126.com"
跨平台协作关键,不同系统换行符差异(Windows 用 CRLF
,Linux/macOS 用 LF
)会导致代码冲突,需统一配置换行符处理规则。
# 提交时自动将换行符转为 LF,拉取时自动转为系统默认换行符
git config --global core.autocrlf true
# (仅 Windows 可选)禁止 Git 自动转换换行符(适合纯 Windows 团队)
# git config --global core.autocrlf false
# (仅 Linux/macOS 可选)提交时强制检查换行符是否为 LF,否则报错
# git config --global core.autocrlf input
额外配置:通过 .gitattributes
文件(仓库级)强制团队换行符规则(推荐团队项目使用),在仓库根目录创建 .gitattributes
并添加:
# 所有文件统一用 LF 换行符
* text=auto eol=lf
# 二进制文件(如图片、压缩包)不转换换行符
*.png binary
*.jpg binary
*.zip binary
启用 Git 命令行颜色高亮,便于区分分支、提交状态、文件类型等信息。
# 全局启用所有 Git 命令的颜色高亮
git config --global color.ui auto
# (可选)精细化配置各命令的颜色(如自定义分支名颜色为绿色)
git config --global color.branch.current "green bold"
git config --global color.diff.old "red"
git config --global color.diff.new "green"
忽略文件全局配置(避免重复创建 .gitignore)
# .gitignore 隐藏文件
# 配置缓存文件
cache/
# 1. 创建全局忽略文件(路径可自定义,示例为 ~/.gitignore_global)
touch ~/.gitignore_global
# 2. 配置 Git 识别该全局忽略文件
git config --global core.excludesfile ~/.gitignore_global
验证配置项是否成功,使用git config --list
:
color.ui=auto
user.name=stark
user.email=stark@126.com
core.autocrlf=true
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
3、第一次Commit
初始化的时候需要commit一次,不然克隆clone 分支的时候,会产生错误信息warning: You appear to have cloned an empty repository.
,意思是还是一个空仓库,不允许拉取,commit后就有master分支了。
[git@bogon project]$ git add .gitattributes .gitignore
[git@bogon project]$ git commit -m "Add gitignore gitattributes"
[git@bogon project]$ git branch
* master
这一步后,本地仓库(Local Repository) 就是这里了,你可以使用自己的电脑,也可以使用虚拟机、或者云服务都可以,比如我本地的虚拟机ip 192.168.31.145
,我本地仓库的地址就是/home/git/project
。
需要有一个文件,不然在克隆的时候,会产生错误信息 fatal: destination path 'project' already exists and is not an empty directory.
第一步我们已经成功创建本地仓库,对仓库进行初始化,并且提交了第一次的Commit,我们当前的分支是Master,接下来我们要创建工作目录(Working Directory) ,就是你在电脑里能看到的项目文件夹,存放着实际的文件。
1、克隆到开发机
推荐使用Git用户来管理Git服务,创建Git用户的步骤。
# 创建git用户组和用户
sudo groupadd git
sudo useradd -m -c "Git Version Control" -d /home/git -s /bin/bash -g git git
# 设置git用户密码
sudo passwd git
克隆到开发机,或许是自己的电脑,这里就是所谓的 工作目录(Working Directory) 了。
# 192.168.31.145 虚拟机Ip
# 本地仓库目录 /home/git/project
# git 是用户名
$ git clone git@192.168.31.145:/home/git/project/ project
Cloning into 'project'...
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 10 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (10/10), done.
Resolving deltas: 100% (2/2), done.
使用git add
命令,将工作目录的修改添加到 暂存区(Staging Area/Index) :用于临时存放你的改动,是工作目录和本地仓库之间的缓冲。
$ git add login.html
$ git commit -m "Add login"
# 添加指定文件到暂存区
git add <文件名>
# 添加当前目录所有修改到暂存区
git add .
# 添加所有修改(包括删除的文件)到暂存区
git add -A
如果要放弃工作目录的修改,使用git checkout
命令实现:
# 放弃工作目录中指定文件的修改
git checkout -- <文件名>
# 放弃工作目录中所有未提交的修改
git checkout .
使用git reset
命令,有时我们有这种场景,需要暂存区撤销到工作目录:
# 取消暂存区的指定文件(保留工作目录修改)
git reset HEAD <文件名>
# 取消暂存区的所有文件(保留工作目录修改)
git reset HEAD .
# 取消暂存区 index.html
git reset HEAD index.html
#清除指定的commit
git reset --hard 7a7a25472a8b9dc9193
使用git commit
命令,将暂存区的内容提交到本地仓库,commit可以提交也可以撤回,撤回的时候涉及到 HEAD 指针,要主要涉及指针丢失的问题。
# 提交暂存区内容到本地仓库,需要填写提交信息
git commit
# 提交并直接添加提交信息
git commit -m "你的提交信息"
# 跳过暂存区,直接提交工作目录中已跟踪文件的修改
git commit -am "你的提交信息"
git commit --amend #修改最后一次提交
使用git log
命令,可以查看提交历史:
# 查看完整提交历史
git log
# 简洁显示提交历史
git log --oneline
# 图形化显示提交历史
git log --graph --oneline
使用git reset
命令,也可以对撤销最近的提交(保留修改),--soft
放回暂存区,--hard
撤回的是工作目录,这两个是需要非常注意的地方。
# 撤销最近一次提交,将修改放回暂存区
git reset --soft HEAD~1
# 撤销最近一次提交,将修改放回工作目录
git reset --mixed HEAD~1 # 默认选项
# 彻底撤销最近一次提交,丢弃所有修改(危险操作)
git reset --hard HEAD~1
远程仓库我们使用Github作为实践目标,实现Git与GitHub的简单同步来理解本地仓库与远程仓库的关系,id_rsa.pub
就是本地生成的公钥,注册一个GitHub账号,把本地生成的公钥配置在Github,点击头像找到 SSH and GPG keys
1、创建Git用户、注册GitHub账户、配置ssh秘钥
# 创建SSH目录
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# 创建authorized_keys文件(用于仓库访问权限)
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 生成SSH密钥(在git用户下执行)
ssh-keygen -t rsa -b 4096 -C "15117995393@126.com" -f ~/.ssh/id_rsa
[git@bogon .ssh]$ ll
-rw-------. 1 git git 746 Oct 9 09:04 authorized_keys
-rw-------. 1 git git 3243 Oct 9 08:58 id_rsa
-rw-r--r--. 1 git git 745 Oct 9 08:58 id_rsa.pub
2、设置远程仓库( GitHub ),Git与Github的简单同步
在本地仓库目录设置远程仓库,也就是GitHub的仓库地址,git@github.com:stark0824/test.git
,已经设置成功了。
# github 是别名
[git@bogon project]$ git remote add github git@github.com:stark0824/test.git
[git@bogon project]$ git push github --all
工作目录上就有两个分支,一个是本地仓库的地址,一个是GitHub远程的地址。
$ git remote -v
github git@github.com:stark0824/test.git (fetch)
github git@github.com:stark0824/test.git (push)
origin git@192.168.31.145:/home/git/project/.git (fetch)
origin git@192.168.31.145:/home/git/project/.git (push)
设置git push github --all
,这个同步代码的时候直接使用git pull 和 git push
同步和更新代码了。
我把Git本地仓库、工作目录、暂存区、远程仓库画了一张Mermaid 语法图送给你,我想把幸运送给你~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。