git知识总结

要知道

本地回退后,反悔了,可以恢复。前提是已经提交了,提交了就丢不了。 

git reflog  +  git reset --hard commitId


以前git push不让推,就是没有对应关系。第一次推要setxxx参数。 


 

 前奏


 


设置用户名和邮箱,设置错了,可以重新输入,重新设置

git config --global user.name “gzy”

git config --global user.email "xxxx163.com"

查看用户名和邮箱。邮箱可以是不存在的邮箱

git config --global user.name

git config --global user.email

给指令设置别名 。自己无法用鼠标创建.开头的文件,可以用指令。必须设置在用户根目录下 ~/表示根路径下

1.创建.bashrc文件

touch ~/.bashrc

2.在.bashrc文件中输入如下内容

#用于输出git提交日志

alias git-log ='git log --pretty=oneline --all --graph --abbrev-commit'

#用于输出当前目录所有文件及其基本信息

alias ll='ls -al'

3.打开gitBash , 执行.                告诉shell从~/.bashrc文件中读取并执行其中的命令

source ~/.bashrc

 

解决gitBash乱码问题

1.打开gitBash执行

git config --global core.quotepath false

2.git安装目录下文件中修改文件,添加两行代码    git_home是git安装目录

 

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

 

初始化仓库

git init

查看内容  配置完别名的

ll

 状态

我们的文件所在区域就是工作区 

缓存区就是提交本地仓库之前的缓存区

工作区进入暂存区用add,暂存区进入仓库用commit。


git流程中的状态

untracked未跟踪:新创建的文件,还没有与git产生联系。 

unstaged未暂存:修改已经有的文件,但是没有进入暂存区

staged已暂存:已经在暂存区。暂存区就是提交本地仓库之前的缓存区。

to be committed即将被提交:已经进入暂存区,还没被提交

命令 

基础指令

touch file01.txt  创建文件

git status   查看状态

git add .  添加所有到暂存区 

git commit -m "add file01"  提交        在本地提交了肯定丢不了

git log  查看日志   

vi file01.txt(文件名)  键盘insert变为可编辑状态,esc退出,:wq退出保存

git reset --hard commitId    回退版本

git reflog  查看操作记录      可以查看历史,即使回退完,也可以返回  。查看已删除的记录
git-log  查看提交记录    这个是别名指令

当git add  不想将所有的文件都添加到缓存区时。

 touch .gitignore   创建忽略文件    .固定名称

vi .gitignore  insert  :wq

输入 *.a  就是git add . 不会添加.a结尾的文件。

git clone 克隆

远端分支,也是一个分支。 

git fetch origin master   抓取远端master到本地

git pull    拉取远端

推送远程

git remote add origin git@gitee.com:ayu--66/git_test.git   关联远程仓库   origin是远端分支名可以自定义,一般都默认是origin

git remote  查看是否有远程仓库

git push origin master   将master推到远程仓库,每次都这么写也可以      因为名称一致,所以省略了 :master

git push  推送远端       不让推,是因为不知道绑定关系,本地与远端。

git branch -vv   查看本地与远端的对应关系

git push --set-upstream origin master:master    设置对应关系     第一次推的时候要加setxxx

git push 有了对应关系就可以使用了。

 

 

 分支

git branch  查看分支                   head指向谁,谁就是当前分支

git branch dev01(分支名)  创建分支

git checkout dev01(分支名) 切换分支 

git checkout -b dev02   切换并创建    没有这个分支就创建出来在切换。

git merge 分支名称(要合并的分支)   合并分支    合并到master,现在就要在master。

git branch -d b1  删除分支,需要做各种检查

git branch -D b1 强制删除  (删除的分支有内容没有完全合并到master上,-d就无法删除)

常用命令 

git init

git clone 地址

git add .

git commit -m 'xxx' 

git remote add origin 地址    与远程建立连接

git push origin master    不统一配置,每次都要这么写

git push --set-upstream origin master   统一建立关联

git push   建立关联后,就可以直接用了

git pull = git fetch + git merge  先抓取到本地,再合并也行。

git checkout 分支名

git checkout -b 分支名

git-log 别名日志 配置的

git merge

git status

git reset --hard commitId

 

本地解决冲突:

dev修改 file01文件                            内容:abcdev

master修改file01文件                        内容:abcmaster

切换到master,执行 git merge dev

 

冲突,合并失败。

此时,打开冲突文件file01。这个文件就变样了。

 git无法合并,交给提交人来解决冲突。

 

找到冲突文件,解决后,重新提交。 

 


远端解决冲突

远端与你本地不一致,远端被别人推送了,并且正好是你修改的那一行代码。

之所以产生冲突就是因为 git merge操作,合并操作,不知取你的还是他的。

git pull = git fetch + git merge。

这时候一样的操作,找到冲突的文件,进行修改(解决冲突) add commit 重新推送。

图1:B是本地的master进行了修改。A是远端,修改了master。

图2:B要推代码之前,先拉取(抓取+合并),此步骤会解决冲突。

图3:远端完成同步


两个人都有需求,改的是同一个文件。后推送的人会推送失败,产生冲突。这时候只需拉取,找到冲突文件,add,commit,push,就可以了。A只需再pull就可以和远端一样了。

 

解决冲突的本质操作

找到冲突文件,本地进行修改,然后add ,commit ,再推送

每次推送前,要进行pull操作。 不拉取有可能会覆盖别人代码(但是git会有提示不让推送)

ssh仓库

ssh-keygen -t rsa    生成秘钥   一路回车

cat ~/.ssh/id_rsa.pub   查看秘钥  复制    粘贴到这里。

 

ssh -T git@gitee.com  验证秘钥是否配置成功

如果是秘钥,就用ssh

 

 修改Terminal

铁律 

用idea切换分支之前,一定要提交代码,只要代码提交了,代码就丢不了。 

相关推荐

  1. Git知识点汇总表格总结

    2024-05-13 09:14:09       27 阅读
  2. 大模型 GPTGPT-3.5 知识总结

    2024-05-13 09:14:09       25 阅读
  3. git总结

    2024-05-13 09:14:09       63 阅读
  4. git总结

    2024-05-13 09:14:09       41 阅读
  5. git总结

    2024-05-13 09:14:09       40 阅读
  6. <span style='color:red;'>git</span><span style='color:red;'>知识</span>

    git知识

    2024-05-13 09:14:09      27 阅读
  7. Git使用总结

    2024-05-13 09:14:09       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 09:14:09       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 09:14:09       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 09:14:09       87 阅读
  4. Python语言-面向对象

    2024-05-13 09:14:09       96 阅读

热门阅读

  1. Elasticsearch框架学习的难点和重点有哪些

    2024-05-13 09:14:09       26 阅读
  2. HttpServletRequest对象

    2024-05-13 09:14:09       34 阅读
  3. Cloudera:大数据领域的领航者及其安装部署指南

    2024-05-13 09:14:09       32 阅读
  4. 1.4. 离散时间鞅-鞅的Lp收敛,鞅与停时 (1)

    2024-05-13 09:14:09       32 阅读
  5. 讲一下Git 和 事务的自我新理解

    2024-05-13 09:14:09       30 阅读
  6. 监控易:IP地址管理功能

    2024-05-13 09:14:09       31 阅读