git学习
概念
git跟踪的修改而非文件
工作区:可见的目录文件夹
版本库:
工作区的一个隐藏目录:.git
stage 暂存区 git add就是添加到暂存区
新建的文件状态为untracked 是因为没有 add到暂存区,
commit 会将暂存区的修改提交,但工作区的不会提交,哪怕你也修改了
master 主分支 git commit 就是提交到当前分支
head 指向master的指针,head 表示当前版本,head^上一版,head^100 上一百版
origin 远程库的默认名称
命令:
git init 初始化
git status 显示状态,那些修改过了
git diff 修改了什么,后面可以跟文件名
git diff -- readme.txt 对比当前版本和暂存区的
git diff head^ -- readme.txt 对比上一版和当前的 readme.txt 前也可以加版本号
git add 文件名 添加到暂存区
git add -f aa.class 强制添加
git commit -m '' 提交
git log 显示提交历史(有版本号)
git log --pretty=oneline --abbrev-commit 显示历史 commit id和命令
git reflog 历史命令版本
git reset --hard head^ 回退到上一版,head^100表示往上100版,没有push哦
git reset --hard 版本号 回退到具体版本,版本号可以不写全,没有push哦
git checkout -- readme.txt 丢弃工作区的修改,还没有add的内容
git reset head readme.txt 撤销暂存区的内容,还没commit的,然后再checkout
git rm readme2.txt 删除文件
git remote add origin https://github.com/heroy/learngit.git 本地库添加到远程库
git push -u origin master 首次将本地master推到远程origin库,-u是关联分支
git push origin master 后续推送用此命令
git clone git@github.com/heroy/gitstills.git 克隆仓库到本地
远程
ssh-keygen -t rsa -C "youremail@example.com" 创建SSH-key,密码可以为空
在.ssh目录,id_rsa 为私钥,id_rsa.pub为公钥
分支
git branch dev 创建dev分支
git checkout dev 切换到dev分支
git checkout -b dev 创建并切换到dev分支
git branch 查看分支
git branch -d dev 删除分支 dev
git branch -D dev 强行删除(如果分支没有merge,要用此)
git merge dev 合并dev到master,(当前命令环境在master)
git merge --no-ff -m '新commit模式' dev 合并dev,这种合并模式可以查看合并历史
git stash 储藏挡墙状态
git stash list 储存历史
git stash apply 回复储存历史,但不删除,多个历史时可以 后缀历史编号:stash@{0}
git stash drop 删除历史
git stash pop 回复并删除
git remote 显示远程分支 加 -v 显示详情
标签
git tag v1.0 在当前分支上打标签,标签是打在commit id上的,后面加commit id号 可以达到对应的
git tag 查看标签
git tag -a v1.1 -m 'version 1.1 带说明的' 12a3v3 带说明的标签
git tag -s v1.2 -m 'version 1.2 带有私钥的' fec32a 私钥签名的标签
git tag -d v1.1 删除标签
git push origin v1.2 推送标签到远程库
git push origin --tags 推送所有标签
git push origin :refs/tags/v1.2 删除服务器标签(必须要先在本地删除)
git show v1.0 查看标签详情
其他
vim readme.md vim模式编辑文本
进入vim后,按esc退出输出状态,Shift+; 然后 q!(wq!是保存文件) 然后 回车
git config 查看配置命令
git cofnig -l 查看配置信息
git check-ignore -v App.class 查看是否忽略
工作区目录下 加一个 .gitignore文件 里面可以编写忽略的文件
被忽略的文件 不可以add, 但可以 -f 强制添加
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
将后续命令简化为 lg