创建 SSH keys
// 创建github SSH keys:
cd ~/.ssh
ssh-keygen -t rsa -C "*****@qq.com"
// 文件路径:
C:\Users\计算机名称\.ssh\id_rsa.pub
添加新库
- git init
- git add .
- git commit -m "***"
- git branch -M main
- git remote add origin https://github.com/***/***.git
- git push -u origin main
切换协议
PS1:
git remote -v
// 切换到https:
git remote set-url https://github.com/username/repository.git
// 切换到ssh:
git remote set-url git@github.com:username/repository.git
PS2:
// 删除https,改为ssh协议
$ git remote rm origin
$ git remote add origin git@github.com:AdeGitHub/hello-world.git
查看分支
git branch
-a 查看所有
-r 查看远程
-v 查看所有分支
-d <分支名>:删除本地分支
<分支名>:新建分支
删除远程分支
git push origin --delete <BranchName>
git branch -r -d origin/branch-name
git push origin :branch-name
删除本地分支
git branch -D <BranchName>
切换分支
git checkout
<分支名>:切换分支
-b 创建新的分支
合并分支
如
master
分支合并branch
分支,那么当前必须处于master分支上,然后执行 git mergebranch
命令
git merge
<被合并分支名>:合并分支
合并出现冲突:
1.删除git自动标记符号,如<<<<<<< HEAD >>>>>>>等
2.修改到满意后,保存退出
3.执行以下命令
- git add <file name>
- git commit -m "日志信息"
版本控制
git reset
--hard 简洁/完整哈希索引值:回到指定哈希值所对应的版本
--hard HEAD:强制工作区、暂存区、本地库为当前HEAD指针所在的版本
--hard HEAD^:后退一个版本 一个^表示回退一个版本
--hard HEAD~1:后退一个版本 波浪线~后面的数字表示后退几个版本
比较差异
git diff
<file name>:比较工作区和暂存区的指定文件的差异
HEAD|HEAD^|HEAD~|哈希索引值 <file name>:比较工作区跟本地库的某个版本的指定文件的差异
日志
// 空格向下翻页,b向上翻页,q退出
git log:查看历史提交
--pretty=oneline:以漂亮的一行显示,包含全部哈希索引值
--oneline:以简洁的一行显示,包含简洁哈希索引值
git reflog:以简洁的一行显示,包含简洁哈希索引值,同时显示移动到某个历史版本所需的步数
库操作
git clone <远程库地址>:克隆远程库
功能:1.完整的克隆远程库为本地库,2.为本地库新建origin别名,3.初始化本地库
git remote
-v:查看远程库地址别名
add <别名> <远程库地址>:新建远程库地址别名
rm <别名>:删除本地中远程库别名
git fork:复制远程库
提示:一般是外面团队的开发人员fork本团队项目,然后进行开发,之后外面团队发起pull request,
然后本团队进行审核,如无问题本团队进行merge(合并)到团队自己的远程库,
整个流程就是本团队跟外面团队的协同开发流程,Linux的团队开发成员即为这种工作方式。
在错误的 git 分支开发了新功能
- git stash 把我们当前修改的内容暂存起来,然后我们的工作区就恢复到在没有开发新功能之前的样子。
- git stash apply 这个命令表示把我们之前暂存的内容,应用到当前分支
- git stash list 查看列表
- git stash pop 应用最新的快照到当前分支,如果应用成功的话就把这个快照从存储快照的栈中移除
- git stash drop 丢弃一个快照
- git stash clear 清除所有的快照
撤销相关操作
1.未使用 git add 缓存代码时。
- git checkout -- filepathname[文件名] '--'不能省略
- git checkout . 全部文件
2.已经使用了 git add 缓存了代码。
- git reset HEAD filepathname[文件名] 来放弃指定文件的缓存
- git reset HEAD . 全部文件
3.已经用 git commit 提交了代码。
- git reset --hard HEAD^ 来回退到上一次commit的状态
-javascript git reset --hard commitid[版本id] 回退到任意版本