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