git 中的常用命令
本地库
1.初始化:git init
.git文件存的是本地库相关的目录和文件
2.设置签名:git config
优先级:项目级别和系统级别都有,采用项目级别
局部有效:git config user.name “zhangsan”/git config user.email “2042943518@qq.com”
全局有效:git config --global
3.查看状态:git status
4.提交到暂存区:git add big.java
从暂存区撤回:git rm --cached big.java
5.暂存区提交到本地库:git commit
commit什么都不写,需要添加一个提交的信息:进到VM文件中添加信息
对文件进行了追踪和新建文件的时候有区别了:如果是追加可以直接commit,也可以add之后commit,但是新文件需要先add才能commit
git commit -m “添加提交信息”
git commit -m “my second commit modify big.java”
新建的文件必须先执行一下add再commit
如果是追加文件可以直接commit到本地库。但是提交之后就不能撤回了,add到暂存区的是能撤回的,也是暂存区存在的意义
6.显示所有版本:git log --pretty=oneline
或者git log --oneline
或者git reflog显示了HEAD@{移动到当前版本需要多少步}
控制翻页的方式:空格向下翻页。b向上翻页
HEAD指向当前版本
后退操作的具体方式:
①基于索引值:git reset --hard c89b146(版本号前7位)是最好用的
vim文件中数据会退回到退回版本的状态,但是数据并没有删除,就是给挪了一个地方而已,还能前进到后面的版本
往前走:git reset --hard c89b146 又前进回到了最后一个版本
②只能往后退,不能往前.写几个就是退几步:git reset --hard HEAD^^
③~:git reset -hard HEAD~n:表示后退n步
公库:读权限开放 私库:读权限私有
denied:权限,用户名,密码不对
7.删除文件并找回
前提:删除前,文件存在时的状态已经提交到了本地库
操作:git reset --hard [文件存在时状态的版本]
8.比较文件差异
git diff aa.txt :表示是和暂存区提交的文件进行比较
git diff HEAD aa.txt:表示是和本地库中的版本(历史版本)进行比较
git diff:比较所有的文件
9.分支:
分支好处:同时并行推进高性能的开发,提高效率
各分支批次独立
操作:查看所有分支 git branch -v 创建分支git branch hot_fix
切换分支:git checkout hot_fix
合并分支:必须站在接收修改的分支上去合并
git branch master[被合并的分支名],git merge hot_fix[有新内容的分支名]
冲突:两个分支修改的是同一个文件的同一个位置(同一个版本)就会产生冲突,需要人为确定保留哪个
JING@JING-PC MINGW64 /d/bigdate/java/07-实时/代码/test(hot_fix)
$ git commit -m "tu"
[hot_fix 61060de] tu
1 file changed, 1 insertion(+), 1 deletion(-)
JING@JING-PC MINGW64 /d/bigdate/java/07-实时/代码/test (hot_fix)
$ git merge master
Auto-merging bb.txt
CONFLICT (content): Merge conflict in bb.txt
Automatic merge failed; fix conflicts and then commit the result.
打开文件有冲突提示:需人手动确定保留哪个
<<<<<<< HEAD
9999999999999999
=======
4444444444444
>>>>>>> master
youxaiyule
shide
meicuo@@@@@@@@@@@@@@@@2$$$$$$$$$$$$$$$$$$4
$ git status
On branch hot_fix
You have unmerged paths.
(fix conflicts and run “git commit”)
Unmerged paths:
(use “git add …” to mark resolution)
no changes added to commit (use “git add” and/or “git commit -a”)
操作:先将冲突标记为冲突已解决的状态,就是 add之后还得commit,最后才能merge
这里解决冲突的时候git commit -m “chongtu”不能加文件名
10.git版本的保存
快照留存,重复的文件会有指针指向原来的文件,通过各版本之间的父子关系
11.git分支的管理:管理的本质是创建和管理指针
2.远程库
远程库的地址:https://github.com/wj12580/mytest.git
远程库起别名: git remote add origen https://github.com/wj12580/mytest.git
JING@JING-PC MINGW64 /d/bigdate/java/07-实时/代码/test(hot_fix)
$ git remote -v
origen https://github.com/wj12580/mytest.git (fetch)
origen https://github.com/wj12580/mytest.git (push)
1.推送:git push origen master
2.克隆:git clone https://github.com/wj12580/mytest.git
克隆效果:完整的把远程库下载到本地,创建了origen远程地址别名,初始化本地库
下载之后再本地库修改,提交到本地库是可以的,如果想要将修改的提交到远程库需要加入团队
3.lisi:往远程库推的是本地库的分支,包含这个分支的所有文件
git
git pull origin
zhangsan:下载远程库:git clone 项目地址 项目别名
修改代码之后:git config user.name “linghuchong”
git config user.email “linghuchong@qq.com”
提交:git commit -m “jianfa01”
提交远程:git push origin master
发现提交不了,是因为公库,读权限有,无写权限,一个团队也得申请把成员加目中就具有写的权限了
4.拉取:pull=fetch+merge
git fetch[远程地址库地址别名] 和[远程分支名]
git merge[远程库地址别名][远程分支名]
5.协同开发冲突解决问题
如果不是基于github远程库的最新版所做的修改,不能推送必须先拉取,拉取后进入分支状态,和【分支冲突解决】一样
6.跨团队协作
fork[东方fork]+pull request
7.ssh免密登录
cd ~ ssh-keygen -t rsa -C wj12580 然后回车回车回车 cd ~/.ssh ll有
-rw-r–r-- 1 JING 197121 1679 7月 11 08:22 id_rsa(私钥)
-rw-r–r-- 1 JING 197121 389 7月 11 08:22 id_rsa.pub(公钥)
复制出公钥的内容:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfdYEN1AnWyELAGU2npWAjQf/jUl2awEJyc7HiPIoCb/VspEFPJjoZ8jseXfO4VK5pFrNbATS0RYU1ocDmU0ZQW7kHTvG6TRxnZ5E0bOQGGmMkyIoIFh3wiF3i8vxI3a5eTSto8dveAokBE0WNMcZ/z wj12580
到github网页上ssh and GPGkeys粘贴进去
命令行:git remote -v看下只有之前的地址
git remote add origen_ssh git@github.com:wj12580/mytest.git
再git remote -v
git remote -v
origen https://github.com/wj12580/mytest.git (fetch)
origen https://github.com/wj12580/mytest.git (push)
origen_ssh git@github.com:wj12580/mytest.git (fetch)
origen_ssh git@github.com:wj12580/mytest.git (push)
ssh免密登录的也有了
git在idea中的操作
请听下回分解☺