All technological notes.
Git 使用 git init 命令来初始化一个Git仓库.
在执行完成 git init 命令后,Git仓库会生成一个 .git 目录,该目录包含了资源的所有元数据。
命令
git init
会在当前文件夹中创建 .git 隐藏文件夹。


git init 时会重新初始化本地仓库
命令
git init <subfolder>


mkdir <new folder>
cd <new folder>
git init
命令
git clone <remote_repo_url>
.git隐藏文件夹用作本地git仓库;
git clone 时,可以所用不同的协议,包括 ssh, git, https 等,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码。
各种写法如下:
命令
git clone <remote_repo_url> <directory>
remote_repo_url: 目标git仓库路径。通常是Github项目地址。
directory:目标文件夹名/路径
**参数

代码说明:在父目录中创建mygrit文件夹


显示所有文件变化,包括工作区与缓存区的对比,缓存区与本地仓库的对比.
命令
git status

changes to be committed:在缓存区中被改动的文件,包含新增的文件
changes not staged for commit:已经在缓存区但在工作区中被改动的文件
untracked files:在工作区中没有提交


命令
git log






命令
git commit

命令
git commit
如果没有输入信息,则会中止提交;
如果输入信息以“#”开头,则视作无输入信息;
输入信息后关闭文件,相当于参数-m ‘message’。
命令
git commit -m 'message'
代码说明:
- 查询状态,显示有未提交缓存的修改文件stage1_py;
- 缓存文件,并查询状态,显示修改文件已经缓存;
- 提交缓存区中文件并留下信息‘commit1’;
- 查询状态,显示无更新。

git commit -am 'message'
git add 的步骤。代码说明:红色标识“M”标识工作区有修改但没有缓存。

命令
git reset <head>
~数字 表示
代码说明:
- 查询状态:工作区、缓存区、仓库文件都一致。
- ls-files显示当前缓存区只有demo1_py;
- reset后,恢复此前的demo1.py和demo2_py;
- ls-files显示当前缓存区恢复了demo1.py和demo2_py。
- 查询状态:工作区与缓存区不一致。即reset恢复缓存区,保留工作区。



当没有参数时,适用–mixed.
代码说明:
- 查询log,显示当前HEAD是modified demo1.
- 恢复上一版本到缓存区,并保留当前工作区修改。所以显示unstaged changes.
- 查询log,显示当前HEAD是create demo1.
- 查询当前状态,显示当前demo1是M,即工作区修改了已缓存的demo1. 证明mixed参数是保留工作区修改,但缓存区是指定版本。

代码说明:
- 查询log,当前HEAD是modified demo1;
- 恢复–soft;
- 查询log,当前HEAD是create demo1;
- 查询状态,显示标识M,表示当前工作区的修改保留在缓存区。相当于工作区与指定版本的修改被
git add。

代码说明:
- 查询log,显示当前HEAD是modified demo;
- 恢复版本;
- 查询log,显示当前HEAD是create demo;
- 查询状态,显示当前工作区,缓存区和指定版本相同。 所以–hard参数的效果是不保留修改,工作区与缓存区都被恢复到指定版本。
