要知道
本地回退后,反悔了,可以恢复。前提是已经提交了,提交了就丢不了。
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切换分支之前,一定要提交代码,只要代码提交了,代码就丢不了。