目录
git 推送提示 Enter passphrase for key '/Users/shuidi/.ssh/id_rsa'
什么是git
git是版本管理工具,它可以将文档的更新记录保存下来,也可以在任意时间进行恢复
是进行团队开发的重要工具
git的基本工作流程
在工作区编写代码,然后将数据存入暂存区,在暂存区提交数据至本地仓库或远程仓库
注意:提交仓库时的描述要详细,已便于后续的修改更加简单
git使用前的配置
配置提交人姓名:git config --global user.name 提交人姓名
配置提交人邮箱:git config --global user.email 提交人邮箱
查看git配置信息:git config --list
注意:配置只需要进行一次,如果要进行修改,重复命令即可
git的基础命令
初始化一个本地仓库 | git init |
查看隐藏的.git文件夹 | ls -ah或attrib -r -h .git |
提交单个修改文件进入暂存区 | git add <文件名> |
提交所有修改的文件进入暂存区 | git add . |
查看git的状态 | git status |
暂存区提交至仓库 | git commit -m "描述" git commit --no-verify -m '描述' 不理会严格模式提交 |
查找工作区内容和仓库内容不同 | git diff <文件名> |
撤销工作区修改的命令 | git checkout -- <文件名> |
查询日志的命令 | git log |
美化日志格式的命令 日志会显示在一行 | git log --pretty=oneline |
返回上一个版本 | git reset --hard HEAD^ |
返回对应版本号 版本号没必要复制全 | git reset --hard 版本号id |
记录从创建的每一次的命令 | git reflog |
将文件从暂存区删除 | git rm --cached <文件名> |
git的分支命令
创建分支的命令 | git branch <分支名> |
切换分支的命令 | git checkout或switch <分支名> |
创建并切换到新的分支 | git switch -c <分支名> git checkout -b 分支名 |
合并分支的命令(在主页面执行) 将会保存所有的 commit 记录 推荐使用 | git merge <要合并的分支名称> |
合并分支的命令 不会保存 commit 记录 | git merge --squash 分支名 |
删除分支的命令(在主页面执行) - D 强制删除 | git branch -d <分支名> |
单独拉取远程指定分支 | git clone -b 远程分支名 仓库地址 |
本地已有项目下拉取远程分支 会自动同步远程分支 | git checkout -b本地分支 origin/远程分支名 |
向远程仓库的对应分支提交代码 没有对应分支会自动创建 | git push -u origin 分支名 或者 git push origin 分支名 |
本地修改分支名称 只有本地可以修改,远程分支删除重建 | git branch -M 旧名称 新名称 |
删除远程仓库分支 | git push --delete 远程分支名 git push origin --delete <branch_name> |
强制上传覆盖 | git pull origin 分支名 --allow-unrelated-histories |
设置 gitHub 密钥 | ssh-keygen -t rsa -C "gitHub邮箱" |
查看密钥 | 先 cd ~/.ssh 之后 ls |
暂时保存更改
在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。
暂时保存更改,不会暂存新建文件,有新建文件的情况下 先 git add 暂存后在执行该命令 | git stash |
添加注释的暂时保存更改 | git stash save '注释' |
恢复最近一条的暂时保存更改 推荐只有一个暂存时使用 | git stash pop |
恢复指定的一个版本 | git stash apply stash@{0} |
查看所有暂存内容 | git stash list |
移除指定暂存 | git stash drop stash@{$num} |
移除全部暂存 | git stash clear |
查看差异 | git stash show |
git 使用时出现的问题
git 推送提示 Enter passphrase for key '/Users/shuidi/.ssh/id_rsa'
原因:在设置密钥时设置了密码
解决方式:可以更改密码为空,或重新设置密钥
更改密码指令: ssh-keygen -p -P "旧密码" -N '' -f ~/.ssh/id_rsa
重新设置密钥指令:ssh-keygen -t rsa -C ''gitLab邮箱
git rebase 合并分支为一个 commit 操作
1. 首先需要在当前分支上合并主分支最新代码,并推送至仓库
git merge --squash master
git add .
git commit -m ''
git push
2. 执行 rebase 操作
git rebase -i <master最新的提交记录>
3. 此时终端进入交互页面,将除最早的一个提交之外,其余更改为 f
操作指令:i 进入编辑 ESC 退出编辑 :wq 保存并退出
4.如果出现冲突,解决冲突后
git add .
git rebase --continue
5. 执行后续操作
git push -f
或者
git push -f origin 远程分支名
6. rebase 出现差错,取消rebase
git rebase --abort
git的忽略清单
.gitignore文件里的文件名或文件夹是不会被拉取到git的
gitHub的代码迁移
B仓库是一个空仓库,除了默认的master分支,没有任何分支。把A的branch1迁入B仓库,B也就有branch1
1 将需要迁移的A仓库的对应分支的代码拉下来,执行
// origin2 为随意起的名字,不鱼分支名重复即可
git remote add origin2 master
2 链接B仓库地址
git remote set-url origin2 B仓库的ssh地址
3 推送分支
git pull
// dev 是B的分支名,原本没有即可,会自动创建
git checkout -b dev
git push origin2