git切换分区到D盘gitTest目录下
cd .. #注意,cd和..之间必须有一个空格[返回上一级目录]
pwd #查看当前目录
mkdir [目录名] #创建一个目录
rmdir [目录名] #删除一个目录
rm [文件] #删除文件名
1.创建本地仓库
例:在D盘新建一个仓库文件夹
2.修改字符编码集为UTF-8
右键git ,右键options。
git基本命令
git config --list #查看全局设置
git --version #查看git版本
clear #清屏
git config --global user.name "Han" #设置用户名
git config --global user.email "2481713248@qq.com" #设置邮箱
#设置远程地址别名
git remote add 【地址别名】 【ssh地址或https地址】
#查看地址别名
git remote -v
#删除远程地址别名
git remote remove 【地址别名】
git init #当前路径初始化本地仓库
提交到本地仓库操作
注意:一定要在本地仓库下操作,不放在本地仓库下的文件,git无法提交到暂存区和本地仓库。
git add 【文件名】 # 提交指定文件代码到暂存区
git add . #提交所有文件代码到暂存区
git rm --cached 【文件名】 #从暂存区删除
git commit -m “ ” 【文件名】#提交到本地仓库,-m表示注释记录
git status #查看是否有文件在暂存区中
已提交的文件进行了修改
红色表示未add到暂存区或已提交的文件进行了修改,绿色表示未提交到本地仓库
查看所有提交的日志
git log #查看所有的提交日志
历史记录过多的分页效果
git log --pretty=oneline #简化日志的查看效果
git log --oneline #更简化
git reflog #添加了计数,更新到最新版需要几步
#git reflog 可以查看所有执行的历史命令,撤销回退到刚才最新的版本可以使用它
对提交的文件进行回退或前进版本
git reset --hard 【要回退或前进的版本索引】 #提交的文件回退或前进到当前索引版
hard参数表明本地库暂存区工作区都一并回退或前进,mixed参数表明暂存区和本地仓库一起回退或前进版本,soft参数表明只有本地库回退或前进版本。
删除文件
git add 【文件名】 #同步到暂存区否则不在日志中记录(图片中忘记了)
git commit -m “” 【文件名】 #先保存到暂存区(不加指定文件名就是所有文件) 以保证可以回退
rm 【文件名】 #移除工作区的指定文件
git commit -m “” 【文件名】 #提交修改(不加指定文件名就是所有文件)
git commit --amend #修改-m后的注释信息
还原文件即查看日志回退到上个版本即可
比较差异
git diff [索引] [文件名] #加索引就是比较暂存区和本地仓库,不加比较的是暂存区和工作区
git diff <local branch> <remote>/<remote branch> # git比较本地仓库和远程仓库的差异
分支
创建分支会将主分支进行复制,在主分支的基础上进行版本更新
git branch -v #查看分支
git branch 【分支名】 #创建分支
git checkout 【分支名】 #切换分支
git merge 【进行合并的分支名称】 #合并分支
合并出现冲突,主分支和副分支都对同一文件同一位置进行了更改
解决:
公司内部商定一个最终结果(删除一个还是合并等等),最终添加到暂存区提交到本地仓库,注意commit后不能指定文件名,否则提交失败。
实战
连接gitHup远程仓库
git remote add 【别名】 【GitHub远程仓库连接】 #远程仓库起别名
git remote -v #查看远程仓库别名
推送到远程仓库Push
建立追踪关系
本地分支 映射 远程分支
在git clone
的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master
分支自动”追踪”<远程主机名>/master
分支。
git branch -vv # 查看追踪关系
# 建立追踪关系的三个方式
1.手动
git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>
2.push时建立追踪关系
git push -u <远程主机名> <本地分支名>
# 加上-u参数,这样push时,本地指定分支就和远程主机的同名分支建立追踪关系,没有就新建。
3.新建分支时建立跟踪关系
git checkout -b <本地分支名> <远程主机名>/<远程分支名>
# 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
这里可以看到 dev 分支正在跟踪 origin/dev 分支并且是最新的,也能看到 issue-101 分支正在跟踪 origin/issue-101 分支并且是最新的,接下来可以看到 master 分支正在跟踪 origin/master 分支并且 “ahead”是21,意味着本地有21个提交还没有推送到服务器。
git push -u <远程主机名> <本地分支名>:<远程分支名>
加上-u参数,这样push时,本地指定分支就和远程主机的同名分支建立追踪关系。
下次就不需要再加映射关系了
git push <远程主机名> <本地分支名>:<远程分支名>
#如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
git push <远程主机名> <本地分支名>
#慎用!删除远程仓库的分支
git push <远程主机名> :<远程分支名>
# 等同于
git push <远程主机名> --delete <远程分支名>
从远程仓库克隆代码
git clone 【远程仓库地址】
从远程库拉取代码Pull
pull操作原理
git pull <远程主机名> <远程分支名>:<本地分支名> #不会建立映射关系
git pull <远程主机名> <远程分支名> #远程分支(master)要与当前分支合并,则冒号后面的部分可以省略。相当于指定分支的代码与当前分支的代码合并到了一起。
== git fetch + git merge
git fetch 【别名或远程仓库地址】【分支】
git checkout 【别名或远程仓库地址/分支】 #这两个操作比较保险
查看完远程仓库分支记得切换回本地仓库分支
git checkout master #切回本地仓库分支
git merge 【远程仓库名/分支】 #合并
团队协作冲突
解决
原因其他成员对同文件同一行进行了更新,导致冲突,本人不能push会失败,先pull下远程仓库的最新内容,本人进行修改,修改好之后add到暂存区之后进行commit即可解决冲突。
git push 失败,可能是本地仓库和远程仓库不同步(本地仓库误删了什么东西导致的)
git pull 一下应该能解决问题,(把远程仓库拉下来同步)
跨团队合作
A项目经理提供远程仓库地址,B公司程序员fork这个远程仓库地址,B程序员就可克隆到本地进行修改。之后创建一个Pull Request,等待A项目经理进行审核是否通过!
SSH免密登录
进入用户主目录
$ cd ~
主目录生成.ssh文件
$ ssh-keygen -t rsa -C 2481713248@qq.com #gitHub邮箱,之后按三次回车,C一定大写
.ssh目录下有两个文件,高级记事本打开id_rsa.pub进行复制操作,粘贴到GitHubSSH中,
粘贴进去
起SSH地址别名,以后本机提交就不用重复验证身份输入账户密码了
IDEA配置Git
本地库的初始化操作
会在当前工程文件夹下生成.git的文件夹。
添加到暂存区
提交到本地仓库
更新
更改文件内容后右键进行add,commit再次提交。
拉取和推送资源到远程仓库
重点:push之前一定要pull下是否有冲突(其他人修改了远程库而你的本地库不是最新的),否则push失败!
两个不同的项目
推送到远程仓库之前需要先pull下远程仓库内容,如果远程仓库和本地仓库是两个不同的项目,所以需要加上相关参数,--allow-unrelated-histories
,告诉git不允许相关历史合并。
不同仓库不一样,所以使用别名前一定要先设置别名
git remote -v #查看别名
git remote add 【别名】 【GitHub远程仓库连接】 #远程仓库起别名
git pull 【别名或远程仓库地址】【分支】 --allow-unrelated-histories
git pull giteeTest master --allow-unrelated-histories
pull出现问题,工作区有更新未提交到本地库。原因因为IDEA隐藏了.iml等文件需要在本地用git add添加到暂存区,commit提交到本地仓库。
error: Your local changes to the following files would be overwritten by merge:
.idea/.gitignore .idea/compiler.xml .idea/encodings.xml .idea/inspectionProfiles/profiles_settings.xml .idea/jarRepositories.xml .idea/misc.xml .idea/vcs.xml .idea/workspace.xml 常考算法.iml
两个不同的项目进行合并时需要加的注释信息
加注释
:按i键插入注释,之后按ESC和:wq进行保存
不加注释
:直接:wq退出即可
同一个项目
pull出现冲突:原因其他人修改了远程库而你的本地库未更新而你也修改了同一文件同一位置。解决方法,push前pull一下项目到本地商议修改合并结果之后add进暂存区commit进本地库,之后在push。
IDEA工作中
clone命令操作远程库到本地
clone操作就不用初始化本地库了