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文件中输入如下内容

java 复制代码
#用于输出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执行

java 复制代码
git config --global core.quotepath false

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

java 复制代码
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切换分支之前,一定要提交代码,只要代码提交了,代码就丢不了。

相关推荐
星海拾遗2 小时前
git rebase记录
大数据·git·elasticsearch
ljh5746491193 小时前
PhpStorm 2022.3 版本中,修改使用 Git 提交时看到弹出式的对话框模式
ide·git·php·phpstorm
云闲不收5 小时前
git rebase
git
江上清风山间明月5 小时前
git pull和git checkout在恢复文件的区别
git·pull·checkout
海鸥816 小时前
in argocd ‘/tmp/_argocd-repo/../.git/index.lock‘: No space left on
git·argocd
尔嵘8 小时前
git操作
大数据·git·elasticsearch
好评1248 小时前
Linux文件上传git
linux·运维·git
大柏怎么被偷了10 小时前
【Git】企业级开发模型
git
Garfield200510 小时前
Git 分支拓扑实践
git·拓扑
DKNG10 小时前
【Windows Host】 hosts配置增加访问github流畅度
人工智能·git·github