Git

Git 的用法。

1. Git 基本概念

Git 基本概念
图:Git 基本概念
Workspace:  工作区
Index/Stage:暂存区
Repository: 仓库区(或本地仓库)
Remote:     远程仓库

2. 配置

Git 的设置文件为 .gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

# 显示当前的 Git 配置
git config --list

# 编辑 Git 配置文件
git config -e --global

# 设置提交代码时的用户信息,用户名最好不要写汉字
git config --global user.name "your name"
git config --global user.email "email address"

3. 新建代码仓库

# 在当前目录新建一个 Git 代码库
git init

# 新建一个目录,将其初始化为 Git 代码库
git init [project-name]

# 下载一个项目和它的整个代码历史
git clone [url]

4. Git 常用操作

  • git 快速上手
git init git-demo
cd git-demo
touch a
touch b
touch c

echo 11 >> a
echo 22 >> a

git add .

git commit -m "11"

echo 33 >> a
git commit -am "33"
  • git 基本操作
# add & commit Mothed 1
git add .
git commit -m "message"

# add & commit Mothed 2
git commit -a -m "message"

# add & commit Mothed 3
git commit -am "message"

# Git 假定所有的改变都是针对同一件事情的,因此它把这些都放在了一个块里。你有如下几个选项:
#输入 y 来暂存该块
#输入 n 不暂存
#输入 e 手工编辑该块
#输入 d 退出或者转到下一个文件
#输入 s 来分割该块
git add -p <file name>

# 改变文件夹的名字:Name -> name
# 直接运行 git mv Name name,执行不成功,会搞成:Name ->name/Name
git mv Name tmp
git mv tmp name

# diff working directory with repos 
git diff

# diff staging area with repos
git diff --cached

# 拿 working directory 和 SHA 比较
git diff <SHA>

# 比较两次提交的差异 
git diff <SHA 1> <SHA 2>

# 查看某次提交变更统计数据
git diff --stat <SHA>
  • git ssh 链接
# diff working directory with repos 
ssh-Keygen -t rsa -C "your email"

# 查看用户主目录的 .ssh/ 文件夹中创建的私钥文件(注意备份)
ls ~/.ssh
# 目录中两个文件:id_rsa (私钥)  和   id_rsa.pub (公钥)

# 打印公钥文件内容
cat ~/.ssh/id_rsa.pub
# 把文件内容复制到剪贴板中

# 在 github.com 的 Settings 中找 SSH and GPG keys, new SSH key

# 利用 SSH 协议来克隆仓库
git clone git@github.com:wangding/test

# 利用 SSH 协议来添加远程链接
git remote add origin git@github.com:wangding/test
  • git branch 操作
# 删除分支 foo 分支,前提 foo 已经合并过
git branch foo -d

# 强制删除分支 foo
git branch foo -D

# 创建分支 foo
git branch foo

# 切换到分支 foo
git checkout foo

# 创建分支并同时切换到 foo,一步做到
git checkout -b foo

# 修改分支名字
git branch -m old_name new_name
git branch -M old_name new_name

# 列出远程分支
git branch -r

# 查看已经合并的分支
git branch --merged

# 查看没有合并的分支
git branch --no-merged

# 列出远程合并的分支
git branch -r --merged

# 取出远程的 foo 分支
git checkout -t origin/foo

# 删除远程分支 1
# <space> 是空格,<remote branch> 是远程分支的名字
# 把空内容推到远程的分支上,就是删除的意思
git push origin <space> :<remote branch>

# 删除远程分支 2
# 在 github 上可以直接删除分支
# 在本地 git pull 不能把远程分支的变化反应到本地
# git pull 和 git fetch 不会清除已经删除的远程分支
# git branch -r 还可以看到已经删除的远程分支
# sourceTree 的线图还可以看到已经删除的远程分支
# 可以执行下面的命令解决问题
git fetch -p

# 合并分支
git merge <branch name>

# 合并分支,拒绝 fast forward,产生合并 commit
git merge --no-ff
  • git blame 逐行查看文档
# 逐行查看 <filename> 的历史
git blame <filename>

# 从第 100 行开始查看 10 行
git blame -L 100,10 <filename>
  • git clean 砍掉 untracked 档案
# 列出打算要清除的档案
git clean -n

# 真正的删除
git clean -f

# 连 .gitignore 中忽略的档案也清除
git clean -x
  • git tag 操作
# 给当前的 HEAD 指针处贴标签 foo
git tag foo

# 给任意的一个提交贴标签 foo
git tag foo HEAD~4

# 给当前的 HEAD 指针处贴标签 foo
git tag foo -m "message"

# 删除标签 foo
git tag -d foo

# 列出标签
git tag

# 将所有标签推送到远程仓库中
git push --tags

# 将具体某个标签推送到远程仓库中
git push origin v0.1

# 拉下来远程仓库的标签
git pull --tags

# 删除远程仓库的标签 foo
git push origin :refs/tags/foo
  • git stash 操作
# 保存进度
git stash

# 弹出进度
git stash pop

# 查看 stash 列表
git stash list

# 删除所有进度
git stash clear
  • git rebase 操作
# -i 是交互操作
git rebase -i <SHA>

# 把当前分支在 master 的位置接上
git rebase master
  • Git 其他操作
# 查看某个文件的提交记录
git log <file name>

# 把 upstream 代表的远程仓库的 master 分支拽到本地
git pull upstream master

# 撤销上一个 commit,前提是没有 push 到远程仓库
git add <something>
git commit --amend -m "some comment"

# 弹出 vim 输入多行 message
git commit

# 查看 log 日志,并过滤需要的信息
git log --grep <filter word>

5. 提升 GitHub 访问速度

  • win10 系统

复制下面的域名解析数据到记事本,在站长工具中,对所有域名测试最快的 IP 地址,即 TTL 值最小的 IP 地址,把这个 IP 地址贴到记事本中,换掉原来的 IP 地址。所有域名搞完一遍后。在 C:/Windows/system32/drivers/etc/hosts 找到 hosts 文件,在 hosts 文件最下面复制粘贴下面的内容:

140.82.113.4      github.com
185.199.109.153   assets-cdn.github.com
185.199.109.153   documentcloud.github.com
69.171.245.53     github.global.ssl.fastly.net
203.98.7.65       gist.github.com
185.199.108.154   help.github.com
54.251.140.56     nodeload.github.com
151.101.108.133   raw.github.com
52.205.36.92      status.github.com
151.101.229.194   github.global.ssl.fastly.net
151.101.108.133   avatars0.githubusercontent.com
151.101.108.133   avatars1.githubusercontent.com

然后立刻刷新系统,刷新方法是:cmd 打开控制台窗口,直接输入:ipconfig /flushdns

注意: hosts 文件有权限限制不能编辑保存,先找到 notepad.exe 程序,鼠标右键用管理员身份运行。然后再打开 Hosts 文件,就可以保存了。

  • CentOS 7 系统

终端命令行模式,输入 sudo vi /etc/hosts,打开 hosts 文件,粘贴上面的 IP 地址和域名的数据。

6. 常见问题

7. 参考资料

8. 资源

2017 -  by 王顶. All rights reserved.本站访客人数  人次

results matching ""

    No results matching ""