git学习
安装配置
1 | git config --global user.name "YourName" |
创建库
1 | git init |
添加文件
1 | git add README.txt file.txt |
查看状态
1 | git status |
比较差异
1 | git diff README.txt |
回退版本
查看修改记录
1 | git log |
回退版本
1 | git reset --hard HEAD^ |
回退两个版本就用
1 | git reset --hard HEAD^^ |
返回现在的版本
1 | git reset --hard 1094a#commit提交的前几位 |
git有一个指令用来记录输入过的指令
1 | git reflog |
撤销修改
1 | git restore -- README.txt |
没有提交到暂存区,则恢复到修改之前的状态,若已提交到暂存区,则恢复到最初提交到暂存区的版本
撤销暂存区的修改
1 | git reset HEAD README.txt |
删除文件
1 | git rm test.txt |
远程库
连接远程库
1 | git remote add origin git@server-name:path/repo-name.git |
origin是远程库名
将本地库推送到远程
1 | git push -u origin master |
以后推送
1 | git push origin master |
查看远程库信息
1 | git remote -v |
删除远程库
1 | git remote rm origin |
远程克隆
1 | git clone git@server-name:path/repo-name.git |
从远程抓取
1 | git pull |
分支管理
创建分支并切换
1 | git checkout -b dev |
等价于
1 | git branch dev |
查看当前所有分支
1 | git branch |
切换分支
1 | git checkout master |
合并分支
1 | git merge dev |
将指定分支合并到当前分支
删除分支
1 | git branch -d dev |
另一种切换分支的方式
切换未创建的分支
1 | git switch -c dev |
切换已有分支
1 | git switch master |
冲突解决
无法合并需要手动解决冲突再合并
1 | git log --graph --pretty=oneline --abbrev-commit |
可查看分支合并图
禁用Fast forward
1 | git merge --no-ff -m "message" dev |
合并后的历史有分支
bug分支
使用git stash
将工作现场储藏起来,使用git stash list
查看工作现场,使用git stash apply
恢复现场,使用git stash drop
清除记录,或直接使用git stash pop
恢复现场+清除记录。
可以多次git stash
,恢复时只需要git stash apply stash@{0}
形式恢复对应的版本
修复bug后将修改后的代码同步到分支上来可以用
1 | git cherry-pick 4c805e2 |
删除未合并的分支
1 | git branch -D dev |
标签管理
添加标签
1 | git tag v1.0 |
显示信息
1 | git show <tagname> |
显示所有标签
1 | git tag |
删除标签
1 | git tag -d v0.1 |
将标签推送到远程
1 | git push origin v0.1 |
将所有标签推送到远程
1 | git push origin --tags |
删除远程标签
1 | git tag -d v0.9 |
定义git
忽略特殊文件
在Git的根工作区下存放一个.gitignore
的文件,将需要忽略的文件名放进去
强制添加文件
1 | git add -f <filename> |
添加快捷键
1 | git config --global alias.st status |
单个仓库下的配置文件放在.git/config
下,全局git配置存放在用户名目录中
更新(阅读Pro Git笔记)
VCS:版本控制系统
其他版本控制系统基于差异,git基于快照
三种状态:已修改、已暂存、已提交
1 | git config --system --global --local |
分别配置全局、当前用户和当前仓库的配置,就近原则,即针对仓库的覆盖全局的。
1 | git config --list |
检查某一项的配置
1 | git help <verb> |
某一命令的帮助
1 | git add <files> |
1 | git status -s |
查看工作区状态
左栏表示暂存区状态,右栏表示工作区状态
.gitignore格式规范
- 所有空行和以#开头的行会被git忽略
- 使用glob模式(shell使用的简化的正则表达式)匹配
- 可以以
/
开头防止递归 - 以
/
结尾指定目录 - 模式前加
!
取反
子目录下的.gitignore
仅作用于它所在的目录
查看修改内容
1 | git diff # 查看尚未暂存的改动 |
提交修改
1 | git commit -a -m 'message' |
撤销操作
1 | git commit -amend #当你忘了添加某个文件,而提交时,使用这个可以让新提交换掉旧提交 |
远程仓库
1 | git remote -v #显示读写远程仓库使用的git简写及对应的url |
标签
1 |