Git基本使用与备忘录
安装
- Windows
- 下载Git
- 双击安装,一路next
- linux
sudo apt-get install git
配置用户
1
2git config --global user.name 'zydarChen'
git config --global user.email 'zydarChen@outlook.com'生成ssh key
1
ssh-keygen -t rsa -C 'zydarChen@outlook.com'
与GitHub、Coding连接
首先将id_rsa.pub
内容复制进账户SSH Key1
2ssh -T git@github.com
ssh -T git@git.coding.net
Git备忘录
targe | code |
---|---|
查看当前git状态 | git status -s |
commit合并到上一个commit | git commit –amend –no-edit |
显示所有commit记录 | git log –oneline |
某个文件回到add之前(工作区不变) | git reset filename |
回到上个commit(工作区改变) | git reset –hard HEAD |
回到特定commit | git reset –hard c6762a1 |
某个文件回到特定commit | git checkout c6762a1 – 1.py |
查看所有commit id | git reflog |
.gitignore文件
- 基础规则
#
注释行dir/
忽略dir文件夹*.zip
忽略zip文件ignore.md
忽略单个文件!
不忽略doc/*.md
忽略doc/
目录下所有的.md文件,但不包括其他子目录下的.md文件
- 文件夹忽略规则
- data: 匹配根目录以及所有子目录中名字为“data”的文件或者文件夹
- data/: 匹配根目录以及所有子目录中名字为“data”的文件夹
- data/*: 匹配根目录中名字为“data”的文件夹
- */data/*: 匹配所有子目录中名字为“data”的文件夹
- 部分忽略某个文件夹(data)
- 不要在根目录.gitignore中配置
- 在data中新建.gitignore文件
1
2/*
!README.md
Git学习笔记
参考:
1 | git clone https://github.com/scut-githuber/os-util.git # clone repository到本地 |
工作区和暂存区
- 工作区:工作目录,如
gitDir
- 版本库:工作区中的隐藏目录
.git
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
流程图
初始在工作目录中添加’test.py’文件,文件处于’untracked’状态:红色的’??’
1
2$ git status -s
?? test.pyadd之后,文件处于’staged’状态:绿色的’A’
1
2
3git add test.py
$ git status -s
A test.pycommit之后,文件处于’unmodified’状态,working tree clean
git log --oneline
查看commit记录。查看使用reset可回到之前版本,git reset --hard HEAD^
,此时工作目录中’test.py’文件将被删除。- add之后,修改’test.py’文件内容,文件处于’modified’状态:绿色的’A’——表示新增文件操作已添加至暂存区,可提交,红色的’M’——表示修改操作仍位于工作区,不可提交。此时执行commit只会提交新增文件操作。
1
2
3
4
5$ git status -s
AM test.py
$ git commit -m 'test.py'
$ git status -s
M test.py
撤销修改
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。 - 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD file
,就回到了场景1,第二步按场景1操作。 - 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,在没有推送到远程库的前提下,
git reset --hard HEAD^
滚回上一版本。
误删与恢复
git checkout -- test.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
分支使用
git branch
:查看分支git branch <name>
:创建分支git checkout <name>
:切换分支git checkout -b <name>
:创建并切换分支git merge <name>
:合并某分支到当前分支git merge --no-ff -m "merge with no-ff" <name>
:强制禁用Fast forward模式,不丢掉分支信息git branch -d <name>
:删除分支
bug分支
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
git stash
:”储存”当前工作现场git stash list
:查看已储存现场git stash apply
:恢复现场git stash pop
:恢复现场并产出储存
经验总结
- 先在GitHub上建好repository,git clone 到本地
- 鼓励大量使用分支
- 通过创建bug分支的方式来修复bug
- 开发一个新feature,最好新建一个分支