Git_2022_零散记录
Git教程
Git教程
1、git 配置
git config -help
【查看git配置】
git config --list
git config --list --show-origin //你可以通过以下命令查看所有的配置以及它们所在的文件:
【全局配置】
该配置会出现在 ~/.gitconfig 文件中
git config --global user.name "username" git config --global user.email "email"
【局部配置】
局部是只对当前仓库起效的,它的配置信息会在当前仓库根目录/.git/config文件下:
git config user.name "username" git config user.email "email"
【生成公钥和私钥 】
ssh-keygen -t rsa -C "lyh_1320@163.com" 或 ssh-keygen -o
-b:指定密钥长度;-e:读取openssh的私钥或者公钥文件;-C:添加注释;-f:指定用来保存密钥的文件名;-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;-l:显示公钥文件的指纹数据;-N:提供一个新密语;-P:提供(旧)密语;-q:静默模式;-t:指定要创建的密钥类型。
【令牌的使用】
git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git //更新远程仓库的 url,此时url带上令牌了,将<your_token>换成你自己得到的令牌。<USERNAME>是你自己github的用户名,<REPO>是你的项目名称
2、create a new repository
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/liyonghuaxin/xian.git git remote add <name> <url>
git push -u origin master //当前分支与多个主机存在追踪关系,则可以使用-u
选项指定一个默认主机
3、已有仓库
git remote rm origin //关联远程仓库时,如果之前之前已经关联远程分支,报错error: remote origin already exists.
git remote add origin https://gitee.com/lyh2021/hualala.git
git push -u origin "master" /为远程仓库名字
4、重新添加远程的分支
git remote rm origin
git remote add origin https://github.com/liyonghuaxin/xian.git git remote add <name> <url>
5、部分命令说明
git pull https://github.com/liyonghuaxin/xian.git master git pull <remote> <branch>
git remote -v //查看远程仓库
git remote set-url origin <你的地址> //修改remote.origin.url (lyh: 修改远程仓库url)
git add . //添加所有文件 或者 git add <文件名> 添加某个文件 (将文件提交到缓存区)
git commit –m “修改信息” //提交本次事务,即将add的文件提交到git仓库(将缓存区提交到分支master下面)
git status //显示提交的状态:已经添加,等待提交事务的文件(绿色字体表示);已经改变但是没有添加(not staged)的文件(红色字体表示);
PS:查看状态: 文件的修改在工作区,显示红色;修改提交到了缓存区,显示绿色;所有内容提交到分支,显示“nothing to commit, working tree clean”。
git diff //比较的是工作区和暂存区的差别
git diff --cached //比较的是暂存区和版本库的差别
git diff HEAD //可以查看工作区和版本库的差别
PS:如果只是在工作区新建一个文件,那么输入这三个命令都没有结果为空白。
git log //可以查看提交历史,
git reflog //
查看命令历史,以便确定要回到未来的哪个版本。
git reset --hard commit_id
//Git允许我们在版本的历史之间穿梭,使用命令
git rebase
6、本地恢复到某个版本
第一步: git log 查看之前的commit的id,找到想要还原的版本
第二步: git reset --hard 44bd896bb726be3d3815f1f25d738a9cd402a477 还原到之前的某个版本 回到指定版本
git reset --hard HEAD^ 回到上个版本
git pull 回到最新版
回退到最初的版本,找不到最近改的commit ID怎么办?git reflog记录你了的每一次命令:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
7、push相关
git push命令
git push origin master和git push的区别
标准push格式: git push <远程主机名> <本地分支名>:<远程分支名>
1>、git push origin master 等价 git push origin master:maste
将本地的master分支推送到origin主机的master分支。如果master不存在,则会被新建。
origin:默认的远程仓库名字/远程主机名 (lyh: github还是码云, 反正代表不通的仓库)
2>、git push origin :master <=> git push origin --delete master
省略本地分支名,则表示删除指定的远程分支(等同于推送一个空的本地分支到远程分支。)
3>、git push origin
当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
将当前分支推送到origin
主机的对应分支。
4>、git push
当前分支只有一个追踪分支,那么主机名都可以省略。
5>、git push -u origin master
//等价: git push --set-upstream origin master
//本地分支不想与本地分支名字相同: git push -u origin <localName>:<remoteName>
当前分支与多个主机存在追踪关系,则可以使用-u
选项指定一个默认主机,这样后面就可以不加任何参数使用git push
。
这叫做simple
方式。
6>、push报错
git push --set-upstream origin master(省略形式为:git push -u origin master)
macdeMacBook-Pro:lyh mac$ git push fatal: The current branch master has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin master macdeMacBook-Pro:lyh mac$ git push --set-upstream origin master
git分支与远程主机存在对应分支,可能是单个可能是多个。
simple方式:如果当前分支只有一个追踪分支,那么git push origin到主机时,可以省略主机名。
matching方式:如果当前分支与多个主机存在追踪关系,那么git push --set-upstream origin master(省略形式为:git push -u origin master)将本地的master分支推送到origin主机(--set-upstream选项会指定一个默认主机),同时指定该主机为默认主机,后面使用可以不加任何参数使用git push。
8、操作分支
git branch //查看本地分支
git branch -a //查看本地和远程分支, 远程用红色标注
git branch <name> //创建本地
git push origin -d <name> //删除远程分支
git branch -v //查看本地分支, 带commit信息
git branch -vv //查看本地分支, 带commit信息, 带对应的远程分支 (包括本地与远程的哪个仓库及分支对应)
修改分支
git branch -M <给本地分支修改名字> // git push -u origin master之前执行, 不然出错.
9、错误处理
push 问题
git 操作git push --set-upstream含义
1>git push 报错
macdeMacBook-Pro:Leetcode mac$ git push fatal: The current branch master has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin master
sh 报错
git push --set-upstream origin master //
1>、HEAD DETACHED push origin失败问题
2>、解读日志
3>、代码回滚
代码回滚:git reset、git checkout和git revert区别和联系
4>、push前没pull,提交到远程仓库(git push -u origin master)发生冲突:
failed to push some refs to 'https://github.com/liyonghuaxin/haha.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.
解决办法:
第一步、拉取远程仓库内容 git pull origin master
第二步、到具体文件解决冲突
第三步、从 git add 这一步开始,重新提交本地修改内容
4>、关于Support for password authentication was removed on August 13, 2021报错的解决方案
把密码换成token(个人访问令牌)