参考廖雪峰大佬的Git教程进行学习:廖雪峰的Git教程
Git安装
1.Linux
Debian/Ubuntu:"sudo apt-get install git(git-core)":包管理获取安装包
其他:下载git源码并解压后,"./config","make","sudo make install"
2.Windows
正常安装即可
安装完后需要设置本地的用户与地址
- git config --global use.email "example@email.com"
Git命令
git init:初始化仓库
git commit -m "msg":提交改动,备注"msg"
git commit:跳出"EDITMSG"文件要求写入提交说明,否则提交失败,写入后保存退出即可
git add "file1.txt" "file2.txt":添加改动过的文件
ls/dir:查看当前目录下的文件夹
ls -ah:显示当前目录下所有的文件夹(隐藏文件夹多以"."开头)
pwd:显示当前目录
git status:查看当前工作区状况,工作区与版本库的比较以及工作区与缓存区的比较
git diff
git diff HEAD --
git log:查看历史提交情况
--pretty=oneline:查看历史版本并只显示版本号与说明
--abbrev-commit:缩略版本号
--graph:显示时间线
git reset --hard HEAD(^/~100):回退至上一个版本/两个版本前/一百个版本前
git reset HEAD
git reset HEAD^
git reflog:查看历史命令
git checkout(restore) --
rm
git rm:确认删除修改
git rm --cached
--f
git push origin master:将本地"master"分支推送至"origin"仓库
git push -u origin master:推送并关联两个仓库
git pull origin main:将origin仓库main分支拉取至本地
--allow-unrelated-histories:拉取或推送的同时允许合并两个不关联分支
ssh-keygen -t rsa -C "youremail@example.com":创建ssh密钥
ssh-keygen.exe:创建ssh密钥
git remote -v:查看远程库信息
git remote rm
git branch dev:创建新分支"dev"
git checkout dev/git switch dev:切换到"dev"分支
git checkout -b dev/git switch -c dev:创建并切换到"dev"分支
git branch:查看当前分支
git branch -d dev:删除"dev"分支
-D:强行删除分支
git merge dev:合并"dev"分支到当前分支(同时选择多个分支会出错)
--no-ff:禁用"fastforward",保留合并时间线
git mv
git stash:暂存工作区
git stash list:查看暂存列表
git stash apply (stash@{0}):保留(指定版本的)暂存并恢复
git stash drop:删除暂存(默认为"stash@{0}"版本)
git stash pop:恢复暂存并删除
git cherry-pick
git checkout -b dev origin/dev:创建远程仓库已有的"dev"分支(将两者链接)
git branch --set-upstream-to=origin/main main:链接远程库的"main"分支与本地库的"main"分支用于"pull"
git branch --set-upstream-to origin/main main:同上
git branch --set-upstream-to=origin/main:将当前分支与远程库的"main"分支链接
git rebase:把本地未push的分叉提交历史整理成直线
特别注意
Windows自带的记事本编辑UTF-8编码的文件会在开头加上0xefbbbf的字符
git缓存区中对同一文件的修改,在未提交前新的覆盖旧的
git支持多种语言,但ssh协议最快;https协议每次使用都需要口令
"git log"后按q退出
报错
"no tracking information"
分析:本地分支和远程分支的链接关系没有创建,用如下命令创建链接关系:
git branch --set-upstream-to <remoteBranchPath> <branchName>
"OpenSSL SSL_read: Connection was reset, errno 10054"
分析:SSL证书认证出现问题,可试着解除SSL认证:
git config --global http.sslVerify "false"
"fatal: refusing to merge unrelated histories"
分析:本地与远程的分支合并出现了问题,可在命令后加上"--allow-unrelated-histories"合并分支,例如:
git pull origin main --allow-unrelated-histories
"Updates were rejected because the tip of your current branch is behind its remote counterpart."
分析:提交出现冲突,先将远程分支拉取至本地合并,解决冲突后再次推送即可