初始设置
设置姓名和邮箱地址
设置使用Git时的姓名和邮箱地址,注意使用英文。
git config --global user.name "MinBadGuy"
git config --global user.email "123456789@qq.com"
SSH密钥配置
生成SSH Key
ssh-keygen -t rsa -b 4096 -C "123456789@qq.com"
这里可以不设置密码,直接回车即可,若设置了密码,后续使用某些git命令时可能需要验证密码,比较麻烦。
这里会在/Users/***/.ssh/
目录下生成id_rsa
和id_rsa.pub
两个文件,分别为私有密钥和公开密钥。
添加公开密钥
在Github中添加SSH公开密钥,按下图顺序,将id_rsa.pub
文件中的内容复制后粘贴在3处,最后点击Add SSH Key
。
添加完成后进行SSH通信验证,执行如下命令。
ssh -T git@github.com
常用操作
clone已有仓库
git clone 远程仓库路径
# 例:git clone git@github.com:MinBadGuy/Assembly.git
通过git clone
命令将Github上的仓库克隆至本地。
查看仓库状态
git status
通过git status
命令查看仓库的状态,未被添加至Git仓库的文件显示为Untracked files
,文件名以红色高亮显示。
提交文件
# 先将文件加入暂存区
git add 文件名
# 再提交
git commit -m "提交信息"
# 查看提交日志
git log
更新远程仓库
git push
通过git push
命令将Github上的远程仓库进行更新。
基本操作
git init——初始化仓库
git init
执行之后,会在当前目录下生成一个.git
的目录,这个目录里存储着管理当前目录内容所需的仓库数据,这个目录的内容被称为附属于该仓库的工作树
。
git status——查看仓库的状态
git status
只要对Git的工作树或仓库进行操作,git status
的显示结果就会发生变化。
git add——向暂存区中添加文件
git add 文件名
暂存区是提交前的一个临时区域,将文件加入暂存区后,该文件就成为Git仓库的管理对象。
git commit——保存仓库的历史记录
git commit -m "提交信息"
通过git commit
命令可以将暂存区中的文件保存到仓库的历史记录中,后续可根据这些记录复原文件。
-m
参数中的字符串是对本次提交的概述。
git log——查看提交日志
# 查看上一次提交操作的日志
git log
# 显示指定目录/文件的日志
git log 目录名/文件名
# 显示文件的改动
git log -p 文件名
git diff——查看更改前后的差别
# 显示工作树与暂存区之间的差异
git diff
# 显示工作树与上次提交之间的差异
git diff HEAD
HEAD
是指向当前分支中最新一次提交的指针。
分支的操作
master
分支是Git的默认创建的分支,所有的开发基本上都是以这个分支为中心进行的。不同的分支中,可以同时进行完全不同的作业,等该分支的作业完成后再与master
分支合并。
注:后续版本的Github中的默认分支为main
。
git branch——显示分支一览表
git branch
git branch
命令将分支名以列表显示,并指明当前所在分支(分支名左侧标有星号*
)。
git checkout -b ——创建、切换分支
# 以master为基础创建新分支,并切换至新分支
git checkout -b 新分支名
# 上述命令等效于以下两条命令
git branch 新分支名
git checkout 新分支名
# 切换回上一个分支
git checkout -
git branch -d——删除分支
git branch -d 分支名
merge——合并分支
将特性分支feature-A
合并至主干分支master
。
# 先切换至master分支
git checkout master
# 再创建合并提交
git merge --no-ff feature-A
get merge
命令默认会启动编辑器,若编辑器启动失败,Git会提示继续使用git commit
命令完成合并。
git log --graph——以图表形式查看分支
git log --graph
图表形式的日志可以直观地看出分支的合并。
更改提交的操作
git reset——回溯历史版本
git reset --hard 目标时间点的哈希值
git commit -amend——修改提交信息
git commit --amend
命令输完后会启动编辑器,修改提交信息即可。
若编辑器启动失败,Git提示使用-m
和-F
选项来提供信息。
git rebase -i——压缩历史
# 将包含HEAD在内的两条最新历史记录合并成一次提交
git rebase -i HEAD~2
输完命令后会打开编辑器,然后将第二个记录哈希值左侧的pick
改成fixup
。
推送值远程仓库
git remote add——添加远程仓库
git remote add origin 仓库路径
# 例:git remote add origin git@github.com:MinBadGuy/Assembly.git
git remote add
命令会将路径中的仓库设置成本地仓库的远程仓库,并将远程仓库的名称设置成origin
标识符。
git push——推送至远程仓库
# 将当前分支的内容推送给远程仓库的origin的master分支
git push -u origin master
# 推送至master分支以外的分支
git push -u origin 其他分支名
-u
参数可以在推送的同时,将origin
仓库的master
分支设置成本地仓库当前分支的upstream
(上游)。添加了这个参数,将来运行git pull
命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin
的master
分支获取内容,省去了另外添加参数的麻烦。
从远程仓库获取
git clone——获取远程仓库
git clone 远程仓库路径
# 例:git clone git@github.com:MinBadGuy/Assembly.git
执行git clone
命令后,默认处于master
分支下,同时将origin
设置成该远程仓库的标识符,即当前本地仓库的master
分支与远程仓库(origin
)的master
分支内容是完全相同的。
# -a参数可同时显示本地仓库和远程仓库的分支信息
git branch -a
# 获取远程仓库的非master分支
git checkout -b 新建本地仓库分支名 origin/远程仓库分支名
# 例:git checkout -b feature-D origin/feature-D
上述命令中,一般将新建的本地仓库分支与远程仓库分支同名。
git pull——获取最新的远程仓库分支
git pull origin 分支名