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

相关推荐
Smile丶凉轩9 小时前
微服务即时通讯系统的实现(服务端)----(1)
c++·git·微服务·github
和你一起去月球18 小时前
TypeScript - 函数(下)
javascript·git·typescript
我不是程序猿儿19 小时前
【GIT】TortoiseGit的变基(Rebase)操作
git
yyycqupt1 天前
git使用(一)
git
Kkooe1 天前
GitLab|数据迁移
运维·服务器·git
Beekeeper&&P...1 天前
git bash是什么,git是什么,git中的暂存区是什么,git中的本地仓库是什么,git中工作目录指的是什么
开发语言·git·bash
Stara05111 天前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
lsswear1 天前
GIT 操作
git