本文参考Git中文手册绘制的思维导图,如有不正之处,欢迎留言指正。
在工作目录(workspace)中修改某些文件
用add命令对修改后的文件进行快照,然后保存到暂存(index)区域
提交更新(commit),将保存在暂存区域的文件快照永久转储到 Git 目录中,指向HEAD(最后一次提交的结果/local repository)
git config --global user.name “XXX”
git config --global user.email "[email protected]"
查看是否有密钥
生成密钥
复制公钥(id_rsa.pub)
把公钥添加到gitlab
测试是否成功
在工作目录中初始化新仓库
从现有仓库clone
git clone [email protected]:/path/to/repository
本质
workspace的文件状态
tracked
被纳入版本控制管理的文件,在上次快照中有它们的记录
类型
unmodified
modified
staged
初次clone某个仓库时,工作目录中的所有文件都属于tracked文件,且状态为unmodified。
untracked(红,未add)
添加需要追踪的新文件和待提交的更改
查看有何改动
status
diff
查看具体修改了什么内容
将快照记录下来/将改动提交到local repository
commit
生成commit-id
撤销
git reset
从local repository回滚到index,直接删除指定的commit
若上次commit有问题,想修改
git reset HEAD^
git reset -soft
git reset -hard
不留staging area 也不留working tree(完全删除任何修改记录),放弃所有更改
git revert
git checkout
从index复制到workspace
git checkout HEAD
将文件从缓存区移除
给当前版本做个标记以便回退到该版本,就不用记冗长的sha1码,记那个tag标签就好
列显已有的标签/查看版本
git tag
筛选出1.4.2系列的
新建
轻量级(lightweight)
指向特定提交对象的引用,只是临时性加注标签,或者不需要旁注额外信息,可以用它
什么选项都不用写
含附注(annotated)
存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用GNU Privacy Guard (GPG)来签署或验证。一般我们都建议使用含附注型的标签,以便保留相关信息
-a(取annotated的首字母)
例: git tag -a v1.4 -m ‘my version 1.4’
-m
查看相应标签的版本信息,查看某一次提交更新了什么
分享标签
默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库
一次推送所有本地新增的标签
了解本地仓库的历史记录
git log
更详细的
git log --author=name
git log --pretty=oneline
git log --graph --oneline --decorate --all
git log --name-status
查看本地分支
查看远程分支
查看所有的分支
git branch name
git checkout -b new_branch
相当于执行下面两条命令
git branch -d new_branch
pull=fetch(获取) + merge(合并)
git merge name
git remote
git remote -v
git remote add origin
修改某个远程仓库在本地的简短名称
git remote rename pb paul
删除
建议push前先获取远程仓库最新代码,先fetch查看是否有更新,不建议直接pull
why
若fetch后没有更新
有更新
查看差异
git diff
git diff HEAD
查看和自己的是否有冲突,没有则可pull,再push
有冲突
revert
stash
git操作
pycharm实际操作
若嫌麻烦没查看是否有更新,直接push失败
是否有读写权限?
同一时刻有没有其他人在push?
若在自己push前其他人已经push,必须pull,再commit、push