git命令以及偷懒小技巧

本文简单介绍了git与github的配置,以及如何将本地仓库与github连接起来。还介绍了git常用的一些命令,以及如何简化git命令
参考资料: 饥人谷
菜鸟教程:Git教程

配置 GitHub (SSH Key)

  1. 进入 https://github.com/settings/keys
  2. 如果页面里已经有一些 key,就点「delete」按钮把这些 key 全删掉。如果没有,就往下看
  3. 点击 New SSH key,你需要输入 Title 和 Key,但是你现在没有 key,往下看
  4. 打开 Git Bash
  5. 按照 https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ 的教程
  6. 运行 ssh-keygen -t rsa -b 4096 -C "你的邮箱",注意填写你的邮箱!
  7. 按回车三次
  8. 运行 ll ~/.ssh,可以看到生成了id_rsa(钥匙)和id_rsa.pub(锁)
  9. 运行 cat ~/.ssh/id_rsa.pub,得到一串东西,完整的复制这串东西
  10. 回到上面第 3 步的页面,在 Title 输入「win7上的ssh」
  11. 在 Key 里粘贴刚刚你你复制的那串东西
  12. 点击 Add SSH key
  13. 回到 Git Bash
  14. 运行 ssh -T git@github.com,用你电脑上的钥匙打开上传到github的锁,你可能会看到这样的提示:

    输入 yes 回车
  15. 然后如果你看到 Permission denied (publickey). 就说明你失败了,请回到第 1 步重来,是的,回到第 1 步重来;如果你看到 Hi FrankFang! You’ve successfully authenticated, but GitHub does not provide shell access. 就说明你成功了!
  • 一台电脑只需要一个 SSH key
  • 一个 SSH key 可以访问你的所有仓库,即使你有 1000000 个仓库,都没问题
  • 如果你新买了电脑,就在新电脑上重新生成一个 SSH key,把这个 key 也上传到 GitHub,它可以和之前的 key 共存在 GitHub 上
  • 如果你把 key 从电脑上删除了,重新生成一个 key 即可,替换之前的 key

Git的配置与使用

配置Git

git --version :查看当前git版本号

1
2
3
4
5
6
7
8
9
git config --global user.name 你的英文名
git config --global user.email 你的邮箱
git config --global push.default matching
git config --global core.quotepath false
git config --global core.editor "vim"
git config --global http.postBuffer 524288000
git config --global http.proxy http://127.0.0.1:1080 #设置代理
git config --global https.proxy http://127.0.0.1:1080
git config --global --unset http.proxy #删除代理

五句话,依次运行。不执行的话,电脑可能会爆炸你信不信。

git config -l : 查看配置
git config --global -l:查看全局配置


只在本地使用Git

git --version查看git Bash版本号

步骤

  1. 创建目录作为我们的项目目录:mkdir git-demo-1
  2. 进入目录 cd git-demo-1
  3. git init,初始化这句命令会在 git-demo-1 里创建一个 .git 目录
  4. ls -la 你就会看到 .git 目录,它就是一个「仓库」,不要进去看,这仓库里面有毒,别进去!
  5. 在 git-demo-1 目录里面添加任意文件,假设我们添加了两个文件,分别是 index.html 和 css/style.css

    1
    2
    3
    touch index.html
    mkdir css
    touch css/style.css
  6. 运行 git status -sb查看文件状态, 可以看到文件前面有 ?? 号

    1
    2
    3
    ## Initial commit on master
    ?? css/
    ?? index.html

这个 ?? 表示 git 一脸懵逼,不知道你要怎么对待这些变动。

  1. 使用 git add 将文件添加到「暂存区」
    你可以一个一个地 add
    1
    2
    git add index.html
    git add css/style.css

你也可以一次性 add
git add . 意思是把当前目录(.表示当前目录)里面的变动都加到「暂存区」

  1. 再次运行 git status -sb,可以看到 ?? 变成了 A
    1
    2
    3
    ## Initial commit on master
    A css/style.css
    A index.html

A 的意思就是添加,也就是说你告诉 git,这些文件我要加到仓库里

  1. 使用 git commit -m "信息"将你 add 过的内容「正式提交」到本地仓库(.git就是本地仓库),并添加一些注释信息,方便日后查阅
    你可以一个一个地 commit
    1
    2
    git commit index.html -m '添加index.html'
    git commit css/style.css -m "添加 css/style.css"

你也可以一次性 commit
git commit . -m "添加了几个文件"

建议使用git commit -v来提交
git commit -v可进行多行描述,首行为title,次行开始description。
比如首行“做了一些更新”,次行“详细更新了xxxx和xxxx以及xxxx”

  1. 再再次运行 git status -sb,发现没有文件变动了,这是因为文件的变动已经记录在仓库里了。
  2. 这时你使用 git log 就可以看到历史上文件的变动:
    1
    2
    3
    4
    5
    commit f0d95058cd32a332b98967f6c0a701c64a00810a
    Author: xxxxxx <xxxxxxxx@gmail.com>
    Date: Thu Sep 28 22:30:43 2017 +0800
    添加几个文件

按↑ ↓键查看,按 Q 退出

  1. 运行history可以看到历史上输入过的命令
  2. 运行start css/style.css 会使用默认的编辑器编辑style.css,保存
  3. 运行git status -sb,可以看到style.css前面一个红色的M(Modified),代表文件有过变动但未add到仓库

    1
    2
    ## master
    M css/style.css
  4. 运行git add style.css,可以看到红色的M变成了绿色的M,表示变动过的文件将添加到「暂存区」

  5. 运行git commit -m "改动style.css"这个改动就被提交到 .git 本地仓库了
  6. 再再次运行 git status -sb,会发现没有变更了,这说明所有变动都被本地仓库记录在案了。
  7. 删除文件rm style.css
  8. 运行git add style.css,将删除结果add到仓库
  9. git status -sb,会发现前面有个绿色的D(Delete)
  10. 运行git commit -m "删除style.css"

总结

  1. git init,初始化本地仓库 .git
  2. git status -sb,显示当前所有文件的状态
  3. git add 文件路径,用来将变动加到暂存区
  4. git commit -m "信息",用来正式提交变动,提交至 .git 仓库
  5. 如果有新的变动,我们只需要依次执行 git add xxxgit commit -m 'xxx' 两个命令即可。别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,你学会 git 了。
  6. git log 查看变更历史

将本地仓库上传到 GitHub

如何将我们这个 git-demo-1 上传到 GitHub 呢?

步骤

  1. 在 GitHub 上New一个repository,名称随意,一般跟本地目录名一致

    按照截图所示,除了仓库名,其他的什么都别改,其他的什么都别改,其他的什么都别改,其他的什么都别改,这样你才能创建一个空仓库
  2. 点击创建按钮之后,GitHub 就会把后续的操作全告诉你,如图
  3. 看图,点击 SSH 按钮,点击 SSH 按钮,点击 SSH 按钮,我想你现在肯定不会忘了点击 SSH 按钮了吧~~~~如果不点击这个按钮,你就会使用默认的 HTTPS 地址。但是千万不要使用 HTTPS 地址,因为 HTTPS 地址使用起来特别麻烦,每次都要输入密码,而 SSH 不用输入用户名密码。
    为什么 SSH 不用密码呢,因为你已经上传了 SSH public key。还记得吗?如果不记得,翻到本文第一部分「配置 GitHub」章节。
  4. 由于我们上之前创建过本地仓库了,所以看图,图中下面半部分就是你需要的命令,我们一行一行拷贝过来执行
    1. 找到图中的「…or push an existing repository from the command line」这一行,你会看到 git remote add origin https://github.com/xxxxxxxxxx/git-demo-1.git, 如果你发现这个地址是 https 开头的,那你就做错了,还记得吗,我们要使用 SSH 地址,GitHub 的 SSH 地址是以 git@github.com 开头的。
    2. 再次点击 SSH 按钮,不管我强调多少遍,总会有人忘记点击 SSH 按钮,为什么呢?我也不知道,为了防止你忘了点击 SSH 按钮,我最后再说一遍,「点击 SSH按钮」,点击之后,整个世界就会变得美好起来。
    3. 得到新的命令 git remote add origin git@github.com:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/git-demo-1.git,复制并运行它
    4. 复制第二行 git push -u origin master,运行它
    5. 刷新当前页面,你的仓库就上传到 GitHub 了!是不是特别简单?只要你按照我说的做,一丝不苟,即可。

直接在 GitHub 创建一个仓库,然后下载到本地

步骤

  1. 在GitHub 上新建一个仓库 git-demo-2,这次就不创建空仓库了,而是自带 README 和 Lisence 的仓库,创建截图如下:

    请按图中所示,填写一模一样的内容,然后点击创建按钮。
  2. 这样一来,这个仓库就会自动拥有三个文件:
  3. 这三个文件的作用请自行了解:.gitignore 的作用、README.md 的作用 以及 LISENCE 的作用
  4. 运行git clone 以git@github.com开头的地址

    运行完了你就会发现,桌面上多出一个 git-demo-2 目录。
  5. cd git-demo-2 进入这个多出来的目录
  6. 运行 ls -la 你会看到,远程目录的所有文件都在这里出现了,另外你还看到了 .git 本地仓库。这时你就可以添加文件,git add,然后 git commit 了。

总结

  1. git clone git@github.com:xxxx,下载仓库
  • git init,初始化本地仓库 .git
  • git status -sb,显示当前所有文件的状态
  • git add 文件路径,用来将变动加到暂存区
  • git commit -m “信息”,用来正式提交变动,提交至 .git 仓库
  • 如果有新的变动,我们只需要依次执行 git add xxx 和 git commit -m ‘xxx’ 两个命令即可。别看本教程废话那么多,其实就这一句有用!先 add 再 commit,行了,你学会 git 了。
  • git log 查看变更历史

如何上传更新

你在本地目录有任何变动,只需按照以下顺序就能上传到github:

1
2
3
4
git add 文件路径
git commit -m "信息"
git pull (相信我,你一定会忘记这一个命令)获取远程仓库最新文件
git push

下面是例子

1
2
3
4
5
6
7
cd git-demo-1
touch index2.html
git add index2.html
git commit -m "新建 index2.html"
git pull
退出vim: esc + : + w + q
git push

然后你去 git-demo-1 的 GitHub 页面,就能看到 index2.html 出现在里面了。是不是很……简……单……呢……

其他Git命令

  • 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操作偷懒技巧

通过~/.bashrc 文件可以简化git操作

自动运行

  1. 首先 touch ~/.bashrc 创建一下这个文件
  • start ~/.bashrc 选用编辑器编辑这个文件,内容为 echo 'Hi'
  • 你也可以用命令行编辑文件 echo "echo 'hi'" >> ~/.bashrc
  • 关闭退出 Git Bash,然后打开 Git Bash,是不是看到了 Hi,这说明每次进入 Git Bash,就会优先运行 ~/.bashrc 里面的命令
  • 重新编辑 ~/.bashrc,内容改为 cd ~/Desktop,重启 Git Bash,有没有发现默认就进入桌面目录了?

你可以用 ~/.bashrc 在进入 Git Bash 前执行任何命令,十分方便。

alias(简写)

  1. 在 ~/.bashrc 里新增一行 alias f="echo 'frank is awesome'",等于号两边不能有空格,你最好一个字都不要错。
  • 运行 source ~/.bashrc,作用是执行 ~/.bashrc
  • 运行 f,就会看到 frank is awesome

也就是说,现在 f 就是 echo ‘frank is awesome’ 的缩写了,利用这个技巧,我们可以把很多常见的命令缩写一下,比如

1
2
3
4
5
6
7
alias la='ls -a'
alias ll='ls -l'
alias gsb='git status -sb'
alias ga='git add'
alias ga.='git add .'
alias gc='git commit'
alias gc.='git commit .'

保存退出,然后运行 source ~/.bashrc

  • 这样一来,你的 Git 操作就会简单很多:
    1
    2
    3
    4
    5
    ga 1.txt
    ga .
    gc 1.txt
    gc.
    gst

永久alias

上面的方法需要每次运行source ~/.bashrc,改用bash_profile可以配置永久alias

  • touch ~/.bash_profile
  • start ~/.bash_profile
  • 用编辑器打开.bash_profile
  • 填入alias

!注意:等于号两边不能有空格

1
2
3
4
5
6
7
alias gi='git init'
alias gac='git add . && git commit -m'
alias gsb='git status -sb'
alias gpp='git pull && git push --progress'
alias gl='git log --oneline'
alias gc='git commit -m'
alias gdist='git subtree push --prefix=dist origin gh-pages'

环境变量

还可以在 ~/.bashrc 里面设置一些环境变量,比如你可以在 ~/.bashrc 里面添加一行

export SASS_BINARY_SITE="https://npm.taobao.org/mirrors/node-sass"
那么以后你安装 node-sass 的时候就不会因为被墙而报错了。以后会用到的,现在先说一下。

设置 PATH

export PATH="目录的绝对路径:$PATH"
可以在 PATH 里添加一个目录,不要运行,等用到的时候再来查。

其他

命令1 && 命令2 :命令1执行成功后才会执行命令2
命令1 || 命令2 :命令1执行失败时,执行命令2
命令1 ; 命令2 : 命令1执行完后,执行命令2

-------------本文结束感谢您的阅读-------------