git入门

至少你得先安装git bash 然后才能启动

右键git bash here 依次输入下面的命令 不要管为啥 用多了自然而然就知道了

配置

1
2
3
4
5
git config --global user.name xxx #方便产品经理找(怼)你
git config --global user.email yyy #方便产品经理找(怼)你
git config --global push.default matching # 原因参考: https://stackoverflow.com/a/21865319/1262580
git config --global core.quotepath false #防止文件名变成数字
git config --global core.editor "vim" # 使用vim编辑提交信息

常用的只有几个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git status -sb 查看文件信息
git add . 添加当前目录里所有文件到暂存区
git commit -m '提交信息' 提交到本地仓库
git pull 建议先执行 同步远程仓库的代码
git push 提交到远程仓库
git log
mkdir a 创建目录a
mkdir -p 'a/b/c'目录路径
rm -r 递归删除目录 但是每次都会问你确认删除吗?
rm -rf 强制删除目录 不停的问你确认删除吗?
echo "hello">newFile.txt 创建文件
rm newFile.txt 删除文件
mv 1.txt 2.txt 重命名==》 把1.txt移动到2.txt
pwd 显示当前目录
ls 查看路径 所有以.开头的都不显示
ls -a 路径 显示所有文件及目录
ls -l 路径 显示更多信息 读写权限
ls -al 路径 显示所有文件及目录 还有读写权限
curl -L http://www.baidu.com > baidu.html 下载文件

如果你不知道一个命令啥意思 又不想去查 可以安装插件tldr to long don’t read

1
2
cnpm  install -g tldr
tldr cat 会告诉 cat命令的用法

配置远程仓库

1.进入 https://github.com/settings/keys
2.如果页面里已经有一些 key,就点「delete」按钮把这些 key 全删掉。如果没有,就往下看
3.点击 New SSH key,你需要输入 Title 和 Key,但是你现在没有 key,往下看
4.打开 Git Bash
5.复制并运行 rm -rf ~/.ssh/* 把现有的 ssh key 都删掉,这句命令行如果你多打一个空格,可能就要重装系统了,建议复制运行。
6.运行 ssh-keygen -t rsa -b 4096 -C “你的邮箱”,注意填写你的邮箱!
7.按回车三次
8.运行 cat ~/.ssh/id_rsa.pub,得到一串东西,完整的复制这串东西
9.回到上面第 3 步的页面,在 Title 输入「我的第一个 key」
10.在 Key 里粘贴刚刚你你复制的那串东西
11.点击 Add SSH key
12.回到 Git Bash
13.运行 ssh -T git@github.com,你可能会看到这样的提示:

Are you sure you want to continue connecting (yes/no)?

输入 yes 回车……问你话你就答,别傻在那
14.然后如果你看到 Permission denied (publickey). 就说明你失败了,请回到第 1 步重来,是的,回到第 1 步重来;如果你看到 Hi FrankFang! You’ve successfully authenticated, but GitHub does not provide shell access. 就说明你成功了!
好了,终于 TMD 添加了一个无聊的 SSH key,不要问我这个有什么用,因为一会儿你就会用到它,你想了解原理就看这篇 文章

如果要讲清楚,太浪费时间了,我们只是想用用 GitHub 而已。

一台电脑只需要一个 SSH key 一个 SSH key 可以访问你的所有仓库,即使你有 1000000 个仓库,都没问题
如果你新买了电脑,就在新电脑上重新生成一个 SSH key,把这个 key 也上传到 GitHub,它可以和之前的 key 共存在 GitHub 上 如果你把 key 从电脑上删除了,重新生成一个 key 即可,替换之前的 key

解释每个命令推荐你去这个

https://explainshell.com/explain?cmd=ls+-lrt

如何上传更新

你在本地目录有任何改变就按下面的命令

1
2
3
4
git add 文件路径
git commit -m '提交信息'
git pull 相信我 你一定会忘记这个
git push

如果你已经commit了 但是发现这次改的需要跟上次commit合并

1
2
3
4
# 修复之前的commit,和本次修改一并提交
git commit --amend -v .
# 上传到远程仓库
git push

其他 中级命令

1
2
3
4
5
6
7
8
9
10
# 给仓库 git@github.com:xxxxxxx.git 起名叫做 origin
git remote add origin git@github.com:xxxxxxx.git 将本地仓库与远程仓库关联
git remote set-url origin git@github.com:xxxxx.git 上一步手抖了,可以用这个命令来挽回
git branch 新建分支
git merge 合并分支
git stash 通灵术
git stash pop 反转通灵术
git revert 后悔了
git reset 另一种后悔了
git diff 查看详细变化

回到之前版本 git reset

  • 慎用,使用前一定要把当前所有代码 commit了,它会使没 commit的内容消失

假设你总共提交了三次代码

1
2
3
第一次 commit版本号 ba0
第二次 commit版本号 eba
第三次 commit版本号 c11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 此时你在第三次提交这个版本
# 查看当前commit内的所有版本号
git log
这样会看到 倒序的提交信息
第三次 commit版本号 c11
第二次 commit版本号 eba
第一次 commit版本号 ba0

# 你想回到第一次提交的代码版本
git reset --hard ba0

# 此时代码回到了版本1
# 再次 git log,你发现只能看到 第一次提交的所有版本信息
第一次 commit版本号 ba0

# 我想回到版本3咋办?
git reflog
这样就列出了 所有提交版本号,和 reset等操作

git loggit reflog区别

  • git log 会上传到远程仓库
  • git reflog 是你私有的日记

高级操作简化git 命令:alias

添加如下内容到 ~/.bashrc

1
2
3
alias ga="git add"
alias gc="git commit -m"
alias gl="git pull"
  • source ~/.bashrc

通灵术 git stash

假设你有实验性代码 aa.js 不能提交,但你又不想删除

1
2
3
4
5
6
7
8
9
# 第一步 添加到暂存区
git add aa.js
# 第二步 这样 aa.js 就被放入 结界中了
git stash
# 此时你就看不到 aa.js了
# 第三步 通灵术召唤 aa.js
git stash pop

git stash 就是用来临时把文件藏起来