Git使用教程

一、安装

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、设置签名

1、系统用户级别:登录当前操作系统的用户范围

git config --global user.name wang
git config --global  user.email  123@qq.com

信息保存位置:~/.gitconfig 文件
2、项目级别/仓库级别:仅在当前本地库范围内有效

git config user.name  wang
git config user.email  123@qq.com

信息保存位置:./.git/config 文件
查看如图所示
在这里插入图片描述
3、级别优先级
就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名,如果只有系统用户级别的签名,就以系统用户级别的签名为准,二者都没有不允许。

三、SSH 登录

进入当前用户的家目录查看是否有ssh

cat ~/.ssh/id_rsa.pub
cd ~

删除.ssh 目录

rm -rvf .ssh

运行命令生成.ssh 密钥目录

ssh-keygen -t rsa -C 123@qq.com 

[注意:这里-C 这个参数是大写的 C]
进入.ssh 目录查看文件列表

cd .ssh
ls -lF

查看 id_rsa.pub 文件内容

cat ~/.ssh/id_rsa.pub

复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→Settings→SSH and GPG keys→New SSH Key,输入复制的密钥信息。

四、创建仓库

已有仓库:

cd existing_folder
git init
git remote add wang(远程分支名称自己定义) ssh://git@gitlab.hyshi.com:2222/wangfc/huyou.git

推送到远程仓库

git push -u wang master

五、分支

创建分支

git branch [分支名]

查看本地分支,前面带有*号的是当前分支

git branch

查看所有分支,包含本地和远程

git branch -a

删除本地分支

git branch -d [branchname]

删除远程分支

git push origin --delete [branchname]

切换分支

git checkout [分支名]

合并分支,比如master合并develop分支

git checkout master
git merge develop

将本地分支上传至远程分支

git remote add origin 远程仓库地址
git push origin 分支名

git强制覆盖本地命令(单条执行)

git fetch --all && git reset --hard origin/master && git pull

六、tag

查看本地tag

git tag -l

查看远程tag

git show-ref --tag

删除本地tag

git tag -d [tag名]

批量删除本地tag

git tag -l | xargs git tag -d

删除远程tag

git push origin :refs/tags/[tag名]

七、拉取冲突

方法一:
先将本地修改存储起来

git stash 

暂存了本地修改之后,就可以pull了

git pull origin master

还原暂存的内容

git stash pop stash@{0}

最后解决冲突并提交
方法二:
服务器代码完全替换和覆盖本地的代码改动

 git reset --hard origin/master
 git pull origin master

git pull 失败 ,提示:fatal: refusing to merge unrelated histories
其实这个问题是因为两个根本不相干的 git 库,一个是本地库,一个是远程库, 然后本地要去推送到远程, 远程觉得这个本地库跟自己不相干, 所以告知无法合并。
具体的方法:
一种方法:是从远程库拉下来代码 ,本地要加入的代码放到远程库下载到本地的库,然后提交上去 ,因为这样的话,你基于的库就是远程的库, 这是一次update了。
第二种方法:使用这个强制的方法

git pull origin master --allow-unrelated-histories

后面加上 --allow-unrelated-histories,把两段不相干的分支进行强行合并后面再push就可以了。

八、回滚

如果你在本地做了错误提交,那么回退版本的方法很简单,先用下面命令找到要回退的版本的commit id

git reflog

接着回退版本:

git reset --hard a7e1d279

a7e1d279就是你要回退的版本的commit id的前面几位。

远程分支版本回退的方法
如果你的错误提交已经推送到自己的远程分支了,那么就需要回滚远程分支了。
首先要回退本地分支:

git reflog
git reset --hard a7e1d279

紧接着强制推送到远程分支

git push -f origin master

删除文件并找回

前提:删除前,文件存在时的状态提交到了本地库。
操作:git reset --hard [指针位置]
删除操作已经提交到本地库:指针位置指向历史记录
删除操作尚未提交到本地库:指针位置使用 HEAD

git reset --hard HEAD

比较文件差异,将工作区中的文件和暂存区进行比较

git diff [文件名]

将工作区中的文件和本地库历史记录比较

git diff [本地库中历史版本] [文件名]

不带文件名比较多个文件

强制覆盖本地文件

git fetch --all
git reset --hard origin/master

git强制覆盖本地命令(单条执行):

git fetch --all && git reset --hard origin/master && git pull

说明:
git fetch从远程下载最新的,而不尝试合并或rebase任何东西。
然后git reset将主分支重置为您刚刚获取的内容。 --hard选项更改工作树中的所有文件以匹配origin/master中的文件。

本地文件强制覆盖远程仓库

git push -u origin master

8、.gitignore 规则不起作用解决办法

语法规则

配置语法:

    以斜杠“/”开头表示目录

    以星号“*”通配多个字符

    以问号“?”通配单个字符

    以方括号“[]”包含单个字符的匹配列表

    以叹号“!”表示不忽略(跟踪)匹配到的文件或目录

    #为注释

常用规则:
    /mtk/               过滤整个文件夹
    *.zip                过滤所有.zip文件
    /mtk/do.c        过滤某个具体文件
    fd1/*       忽略目录 fd1 下的全部内容
 /fd1/*    忽略根目录下的 /fd1/ 目录的全部内容;
   /*
   !.gitignore
   !/fw/bin/
   !/fw/sf/             忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;

gitignore 不起作用的解决办法:文件里的规则对已经追踪的文件是没有效果的.所以我们需要使用rm命令清除一下相关的缓存内容.这样文件将以未追踪的形式出现.然后再重新添加提交一下,.gitignore文件里的规则就可以起作用了。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push origin master

九、错误总结

1、
error: src refspec master does not match any.
error: failed to push some refs to ‘git@gitee.com:there_is_love_and_war_in_the_world/xxl-job.git’
在这里插入图片描述
warning: LF will be replaced by CRLF in .github/ISSUE_TEMPLATE.
在这里插入图片描述
解决方法:

git rm -r --cached .
git config core.autocrlf false
git add .
git commit -m 'wang'
git push -u wang master

十、git stash drop 误用恢复

代码正在开发中不想commit,但是要切换其它分支去处理临时紧急任务,于是git stash 备份当前的工作区的内容。
切换回来时不小心使用了:git stash drop ,于是暂存的修改全部没有了。

方法一、通过IDEA,鼠标右键项目名称,找到你那次stash的动作的记录后revert。
在这里插入图片描述
方法二、通过命令

通过命令找到最近的一些删除的提交

git fsck –lost-found

找到id查看修改情况比如 f3106e*

git show f3106e*

恢复删除掉的内容

git stash apply f3106e*

或者

git merge apply f3106e*

十一、忽略文件

以.idea为开头的

git rm -rf --cached .idea

以iml为结尾的

git rm -rf --cached *.iml

十二、error: failed to push some refs to,本地和远程仓库文件不一致

git pull --rebase origin master
git push -u origin master
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值