一、Git安装和本地用户全局配置
Git的下载与安装
- 进官网下载 https://git-scm.com/download/win 并且安装
- 查看是否安装成功
win + R
进入CMD输入git,出现git命令指南,则安装成功
全局配置本地用户
在git Bash中进行下面配置,下面的账号名字和邮箱都是github的账号所使用的
git config --global user.name "wztlink1013"
git config --global user.email "wztlink1013@163.com"
其中:global表示全局可用,如果要设置局部可用,则只需要删除global即可
验证是否配置成功
git config --global --list
二、SSH绑定Git和GitHub
生成SSH密钥
- 输入以下命令,然后回车三下 (有些时候要回车四下)
ssh-keygen -t rsa
- 然后用户管理员文件夹下会生成下面两个文件id_rsa和id_rsa.pub
GitHub上添加生成的SSH密钥
- 将上述id_rsa.pub的文件内容添加到GitHub上的ssh即可
验证是否绑定成功
ssh -T git@github.com
- 响应如下内容则证明绑定成功
The authenticity of host 'github.com (xx.xxx.xxx.xx)' can't be established.
出现该错误,原因为少了一个known_hosts文件,解决方法,直接键入yes,再回车。
如果连接的是自部署平台(gitlab),比如未绑定域名,命令则为:
ssh -T git@192.168.xx.xxx
三、常用命令总结
git clone
本地没有git仓库,也没有git init
初始化仓库操作,需要先从GitHub上clone仓库下来:
git clone https://github.com/wztlink1013/datastructure-algorithm.git
克隆仓库指定commit深度
有的GitHub仓库存在很久,有很多commit历史,特别是曾经的某一次提交带有较大文件的情况,会导致后续clone工程大的问题
depth n参数代表克隆深度,不带该参数则克隆所有历史版本
git clone git@github.com:wztlink1013/web-learn-notes.git --depth 1
克隆指定分支下来
git clone -b 指定分支名 git@github.com:wztlink1013/wztlink1013.github.io.git
常规提交代码
对本地文件夹进行一系列更改之后,执行命令:
# 查看仓库命令状态
git status
# 文件提交到文件缓冲区
git add .
# 提交仓库并且添加提交信息
git commmit -m "描述本次修改信息"
# 查看修改日志
git log
# 再次查看
git status
# 首次推送
git push -u origin master
# 非首次推送
git push origin master
git pull
使用git pull情况是,本地有git仓库,指之前已经进行git init等一系列命令对该文件夹操作过。比如下面的新建一个例子:
# 初始化本地仓库
git init
# 关联远程仓库
git remote add origin https://github.com/wztlink1013/wztlink1013.github.io.git
# 同步远程仓库和本地仓库
git pull origin master
注意:在进行本地仓库和远程仓库的文件交互时,一定要先pull再push,不然会出未知错误。
- 将远程指定分支 拉取到 本地指定分支上:(当前分支也会被改变,可能需要先创建一个该名字的分支??)
git pull origin <远程分支名>:<本地分支名>
- 将远程指定分支 拉取到 本地当前分支上:
git pull origin <远程分支名>
- 将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支,方法见上)
git pull
在克隆远程项目的时候,本地分支会自动与远程仓库建立追踪关系,可以使用默认的origin来替代远程仓库名,
所以,常用的命令就是 git pull origin <远程仓库名>,操作简单,安全可控。
git push
- 将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>:<远程分支名>
- 将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反):
git push origin <本地分支名>
- 将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支,见上)
git push
同样的,推荐使用第2种方式,git push origin <远程同名分支名>
- git push -u
将本地分支与远程同名分支相关联(多用于首次push)
git push --set-upstream origin <本地分支名>
简写方式:
git push -u origin <本地分支名>
- git push -f
$ git push origin master
To https://github.com/wztlink1013/website-source.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/wztlink1013/website-source.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
- 解决:强制性push
git push -f origin master
git branch/checkout
常规使用
# 从当前分支创建并切换新的分支
git checkout -b 分支名
# 查看本地所有分支
git branch
# 切换到指定分支
git checkout 指定分支名
从远程拉取指定分支并切换
# 方法1
git fetch origin dev-2.0-wzt:dev-2.0-wzt
# 方法2
git fetch
git checkout -b dev-2.0-wzt origin/dev-2.0-wzt
删除指定分支
git branch --delete dev-2.0-wzt1
# error: The branch 'dev-2.0-wzt1' is not fully merged.
# If you are sure you want to delete
# it, run 'git branch -D dev-2.0-wzt1'.
git branch -D dev-2.0-wzt1
# Deleted branch dev-2.0-wzt1 (was 63e7215).
git reset
回退指定历史命令
git reset --hard 9fba643590aeb5889c84029585848b93c3e64e5d
本地回退到指定commit之后,如果需要同步到远程分支之后,可以进行以下操作:
- 在GitHub上复制一个备份分支(因为强制命令会使得新提交的commit失效)
- 使用强制push命令
git push origin -f main
git commit
- git提交信息可以绑定指定的issues,普通使用则是在commit提交信息中
#issue_id
即可,还有一些细节使用参考链接(https://stackoverflow.com/questions/1687262/link-to-the-issue-number-on-github-within-a-commit-message)
将当前修改内容提交新分支
# 步骤1:在当前分支上的修改暂存起来
git stash
# 步骤2:暂存修改后,在本地新建分支(new_branch为新分支的名字)
git checkout -b new_branch
# 步骤3:将暂存的修改放到新建分支中
git stash pop
# 后续就是add -> push等操作了
四丶其他
[rejected] (would clobber existing tag)
vscode报错, 本地代码tags没有同步, 强制刷新本地标签
git fetch --tags -f
评论区