Git学习笔记

This is the learning notes of how to git.

First chapter–How to make a local repository.

获取SSH,本地git连接到github库

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
ssh-keygen -t rsa -C "你的邮箱"

多次回车之后可以找到文件id_rsa.pub,或者使用cat ~/.ssh/id_rsa.pub查看你的ssh。
复制下来,粘贴到github网站的设置/SSH and GPG Keys对应位置上。确认即可。

ssh -T git@github.com

确认已经完成连接

Basic operate

1. 初始化仓库 (在你想创建仓库的文件夹下运行git bash)

mkdir (仓库名)
cd (仓库名)
git init

2. 查看仓库状态

git status

3. 创建一个md文件,用于说明仓库用途。

touch README.md

4. 向暂存区中添加文件

git add (文件名)
git add . (将所有文件添加到暂存区)

5. 提交保存信息

git commit -m "描述信息"
git commit  //打开编辑器详细编辑信息

6. 查看提交日志

git log
git log --pretty=short  //只显示第一行的简述信息
git log -p [文件名]     //显示所有文件[该文件]的改动(能够显示文件前后差别)
git diff                //查看当前工作树与暂存区的差别
git diff HEAD           //查看与最新提交的差别  (***养成提交前查看的好习惯***)

Branch operate

1. 显示分支

git branch    //显示分支一览表
git checkout -b   //创建、切换分支
git log --graph   //图表形式查看分支

2. 切换分支

git checkout -b (需要切换到的分支名)  //切换到对应的分支
//同样效果的命令
git branch (需要切换的分支名)
git checkout (需要切换的分支名)

git checkout -    //切换回上一个分支

3. 合并分支

git checkout (需要合并到的分支名)  //先切换到目标分支,将其他分支合并到该分支
git merge --no-ff (被合并的分支)  //该被合并的分支被合并到上行分支

Change operate

1. 回溯历史版本

git reset --hard (回溯时间点的哈希值)   //所有内容回溯到之前的状态

2. 推进历史

git reflog      //查看当前仓库执行过的操作日志
git reset --hard (需要推进到的时间点的哈希值) //推进到该哈希值时间点

3. 消除回溯导致的冲突

//进入文件中修改,提交即可

4. 修改提交信息

git commit --amend   //启动编辑器
//修改提交信息,保存按 在末行模式下,输入命令:wq关闭即可

5. 压缩历史(更改历史)

git rebase -i HEAD~2  //编辑器打开2条最新的历史记录
//使用编辑器修改

Push to internal storage

1.添加远程仓库

git remote add origin (仓库的SSH)

2. 推送

git push -u origin (分支名)  //推送该分支
git push -b (分支名)   //创建并推送分支

Pull storage

1. 获取远程仓库

//在另一个目录下运行git bash
git clone (SSH)  //将网络仓库克隆到本地
git checkout -b (本地新建分支名) origin/(远程分支名)  //将远程仓库的分支克隆
git push  //直接推送处于该情况下的分支

2. 获取最新的远程仓库分支

git pull origin (分支名)

Use Pull Request

1. [WIP] means Work in progress 正在开发中

2. 保持本地fork仓库的最新状态

cd (本地仓库路径)
git remote add (原仓库新名称) (原仓库SSH)
git fetch (原仓库新名称)       //获取最新数据
git merge (原仓库新名称)/master   //合并

3. 接收Pull Request

git remote add PR发送者 (发送者远程仓库SSH) 
git fetch PR发送者    //将发送方仓库设置为本地仓库的远程仓库
git checkout -b pr1  //创建用于检查的分支
git merge PR发送者/workname   //合并分支
git branch -D pr1   //删除分支

4. 采纳

git checkout (主分支名)
git merge PR发送者/work
git diff origin/(主分支名)
git push     //推送