Git_2022_零散记录

Git教程

Git教程 

 

1、git 配置

git config -help

 

【查看git配置】

git config --list 

git config --list --show-origin  //你可以通过以下命令查看所有的配置以及它们所在的文件:

 

【全局配置】

Git config 查看和设置配置信息

该配置会出现在 ~/.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:指定要创建的密钥类型。

 

【令牌的使用】

github上传本地项目(token)

git remote set-url origin  https://<your_token>@github.com/<USERNAME>/<REPO>.git //更新远程仓库的 url,此时url带上令牌了,将<your_token>换成你自己得到的令牌。<USERNAME>是你自己github的用户名,<REPO>是你的项目名称

 例如:git remote set-url origin  https://<your_token>@github.com/liyonghuaxin/xian.git  (项目地址:https://github.com/liyonghuaxin/xian.git)

 

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

【学了就忘】Git操作 — 61.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 branch -d <name>  //删除本地分支

git push origin -d <name> //删除远程分支

git branch -v  //查看本地分支, 带commit信息

git branch -vv //查看本地分支, 带commit信息, 带对应的远程分支 (包括本地与远程的哪个仓库及分支对应)

git checkout -b branchName commitId  //根据指定版本号创建分支
 

修改分支

git branch -M <给本地分支修改名字> // git push -u origin master之前执行, 不然出错.

1>重命名分支 git branch -m oldBranch newBranch 注意,如果修改的分支只是在本地,还没有推送到远程,只需要执行该操作即可。后面的操作步骤是针对已经推送到远程的分支。
2>删除远程分支 gitpush--deleteorigin oldBranch
3>上传新命名的本地分支 gitpushorigin newBranch
4>本地分支与远程分支关联 git branch --set-upstream-toorigin/newBranch

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(个人访问令牌)

 

posted @ 2018-07-14 08:24  素染年华  阅读(93)  评论(0编辑  收藏  举报