Git 简介

  Git 最流行的版本控制工具.开发必备技.最佳写作平台  每次文件修改,一旦提交(commit),再 sync 之后. 就完全不用担心数据丢失.因为你可以回到任意commit处

  • 文件状态:
    • modified 已修改,但没有保存;
    • committed 已提交,且安全保存在本地数据库中;
    • sync: 才是把本地的 同步到Git网站.
  • 安装方法: 图形化客户端(更新慢) / shell 终端(更新最快)

分支: brand 获取: fetch 合并: merge

只有git仓库才能使用git. 新文件夹必须用git init 把文件夹初始化成 git 仓库再使用

主要命令

  • git clone
  • git remote
  • git fetch
  • git pull
  • git push

一: git clone

一般都是从远程仓库克隆一个版本库开始的. 就是是新建.也一般先从远程新建.然后clone

git clone 语法:

git clone 版本库地址
git clone https://github.com/jquery/jquery.git
这样会把在本地新建一个和远程一样的项目名文件夹.

git clone <版本库的网址> <本地目录名>
这样就可以自定义本地的文件夹名了.不必和远程一样

git clone 支持协议

http/https,ssh,git 等等… $ git clone http[s]://example.com/path/to/repo.git/ $ git clone ssh://example.com/path/to/repo.git/ $ git clone git://example.com/path/to/repo.git/ $ git clone /opt/git/project.git $ git clone file:///opt/git/project.git $ git clone ftp[s]://example.com/path/to/repo.git/ $ git clone rsync://example.com/path/to/repo.git/

SSH 另一种写法(coding 用的…..) SSH 另一种写法(coding 用的…..) git clone [user@]example.com:path/to/repo.git/

二: git remote

管理远程主机的.也就是要 同步文件到哪里. 可以是github, 可以是coding,也可以同时同步到GitHub和coding.

示例:

一个 fork 别人的项目. ➜ jekyllthemes git:(master) ✗ git remote -v mattvh https://github.com/mattvh/jekyllthemes.git (fetch) mattvh https://github.com/mattvh/jekyllthemes.git (push) origin https://github.com/Xu-Jian/jekyllthemes.git (fetch) origin https://github.com/Xu-Jian/jekyllthemes.git (push) 克隆版本库的时候 远程主机会被自动命名成 origin

显示远程主机

➜  2017 git:(master) ✗ git remote show
Coding
Github
Github&Coding

添加远程主机

  1. 命令方式添加 git remote add <主机名> <网址>
  2. 直接修改项目下的 .git/config 文件. \3.

    删除远程主机

    git remote rm <主机名>

重命名远程主机

git remote rename <原主机名> <新主机名>

三: git fetch

git里的更新叫 commit 一旦远程主机版本库有了更新.需要把更新取回本地. git fetch <远程主机名> **一般都是 多人开发.查看别人开发进程用的** **取回的代码对本地开发没有影响!!!!!!**

默认取回所有分支(branch)的更新 也可以取回指定分支 如 master $ git fetch origin master 在本地主机上要用”远程主机名/分支名”的形式读取。 比如origin主机的master,就要用origin/master读取

四: git pull

取回某分支.再与本地指定分支合并 git pull <远程主机名> <远程分支名>:<本地分支名>

git pull示例:

  1. 取回origin主机的next分支,与本地的master分支合并. git pull origin next:master

  2. 远程分支与当前分支合并: 冒号后面可省略 git pull origin next 取回origin/next分支,再与当前分支合并。 实质上,这等同于先做git fetch,再做git merge。

五: git push

本地更新推送到远程主机.

如果当前分支只有一个追踪分支,那么主机名都可以省略。 git push

一分支多主机

-u 指定一个默认主机. git push -u origin master 不带任何参数的git push,默认只推送当前分支,这叫做simple方式。

推送当前分支到所有主机

git push --all origin 将所有本地分支都推送到origin主机

如果远程主机的版本比本地版本更新,推送时Git会报错. 要求先在本地做git pull合并差异,然后再推送到远程主机。 这时,如果你一定要推送,可以使用–force选项。 git push –force origin 结果导致远程主机上更新的版本被覆盖。 除非你很确定要这样做,否则应该尽量避免使用–force选项。

apply/save stash

stash 贮藏

有时候 你不想提交一个新的更新.(比如开发只进行了一半) 你想转到别的分支进行工作. 这时候就可以用到stash了, 不然以后你无法回到这个开发了一半又没有提交的工作点.

Merge

分支合并..

主分支都是正式版本. 你要测试/添加新功能 最好是从master上分支出来.在这个分支上操作. 当功能添加完成 再合并到主分支上. 又变成一个分支了…

rebase

把一个分支中的修改整合到另一个分支有两种办法:merge & rebase rebase 衍合的意思…

反正就是复杂的合并… rebase 详细参考

桌面软件: Github desktop

新建仓库 → Finder 中打开仓库文件夹 → 添加/修改文件 Commit(提交修改, 全保存在本地数据库) → 同步到Git网站.

删除仓库: Github 网站 → 仓库 → 设置 → 删除

编辑文件: Ulysses 编辑 → guihub 客户端 → 先提交 commiter 再 push….

克隆仓库(完整下载别人的仓库…): 先安装本地客户端 → 去网页 → 选项目 → 克隆到本地.

储存大文件: 直接放文件夹 同步就可以了

经典教程

  1. http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  2. http://backlogtool.com/git-guide/cn/

http://git-scm.com/book/zh 这书 必看.   

安装好之后, 就可以使用 命令行的git工具了 还有个图形界面的 git项目管理工具.   初次运行git前 的 配置. 也就是配置git工作环境.   第一个要配置的 就是你个人用户 名称 和电子邮件. 每次git提交都会用这两条信息,说明谁提交了更新, 永久纳入历史更新.   设置默认文件编辑器, 一般用 vim   查看已有的配置信息 git config –list 命令.     http://zuyunfei.com/2013/04/10/setup-github-ssh-key/ ssh 链接github教程    

新建项目 教程 网页登录 http://www.jianshu.com/p/df7ce9f3a5cb   建好之后 会自动跳转到 新建项目的主页 主页的右下角 有个clone in desktop 就是克隆到 本地电脑的意思 会自动打开本地电脑的github软件 你选一个要存储的文件夹 就好了.   再就是 添加代码 再上传 git add git push 的事情了     学习 config 命令 git help config   新建好项目后 电脑 用户名下 就有个 github 文件夹了 里面就有 你 克隆 下来的全部项目.   如果你要给某个开源项目出力 先把该项目的 git仓库复制一份出来  

         

Git 部署(推送)

部署 就是把 文件夹 同步到远程服务器上. 可以使用 GUI 视图工具. 也可以使用命令来部署.

部署方式

  • https 部署
  • ssh 部署
  • git 部署

SSH 部署

本地电脑生成一对密钥.(公钥+私钥) 私钥要保密. 留在自己电脑上. 公钥传到服务器上… 这样你这台电脑用ssh登录到服务器就可以不用输密码了.

SSH 比喻:

一块玉佩 掰成两瓣. 一瓣给服务器(银行).一瓣自己留着. 你需要去银行帮某种业务: 你拿着自己的一瓣 去服务器(银行)那里证明某个银行账户是你的. 如果吻合就说明这个账户是你的,你就可以有各种权限. 不吻合就不给你读写的权限…

HTTPS 部署

应该就是通过网页. 输入账户名 密码来验证你的身份.

Coding 部署

一个文件夹 同时部署到github+coding…

coding 是需要ssh 来访问仓库的. 公钥官网设置教程

SSH 生成

电脑 生成SSH. 得到私钥和公钥. 公钥传到coding 的个人page设置里面. 然后验证. 就可以推送 项目了.

➜  2017 git:(master) ✗ ssh-keygen -t rsa -b 4096 -C "xx2610@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/v/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/v/.ssh/id_rsa.
Your public key has been saved in /Users/v/.ssh/id_rsa.pub.
The key fingerprint is:
  1. 生成密钥.用你自己的注册邮箱 ssh-keygen -t rsa -b 4096 -C “xx2610@gmail.com”

  2. 回车+回车+回车 就生成好了…

  3. 打开本地的 id-rsa.pub 文件.
  4. 复制里面全部内容(rsa 开头到结尾)到coding 账户设置 → ssh 公钥下.(设置里公钥名字任意取.)

  5. ssh -T git@git.coding.net
  6. 任意目录下 用ssh 输入上面命令. 输入yes 进行连接.

这里千万不要弄错把私钥上传上去.格式不一样的 这里千万不要弄错把私钥上传上去.格式不一样的

没事不要改私钥公钥名称.至少成功连接coding之前不要改

连接成功后呢?????

添加新的远程仓库

git remote

可以给一个别名.不一定要远程项目的名字.

git remote add [shortname] [url] 命令

此时您就可以通过 ssh://git@git-ssh.coding.net:443/{username}/{reponame}.git 的形式进行 Git 操作了。

ssh://git@git.coding.net:xx0219/xx0219.coding.me.git

另外,您还可以修改您的 SSH 配置文件默认使用该方式进行 Git 操作。 只需要修改您的 /.ssh/config 文件即可: Host git.coding.net Hostname git-ssh.coding.net Port 443 最后您可以通过以下命令测试是否配置正确: $ ssh -T git@git.coding.net Hello username You’ve connected to Coding.net by SSH successfully!


别折腾 命令行了 用 sourcetree吧..

→ 新建项目 → from url → 要复制的coding项目的https 链接复制下来.

https://git.coding.net/xx0219/xx0219.coding.me.git

这里要稍微修改下… 前面要加上用户名@

https://xx0219@git.coding.net/xx0219/xx0219.coding.me.git 第二个是 本地文件夹. 不能是有内容的 要空的文件夹才行

然后 下拉就可以了…..

提交的时候 自然会要你输入账户的密码的…

Coding 自定义域名

域名购买处: cname www pages.coding.me

coding 项目 → pages 服务 → 自定义域名 → 绑定

这里地址要写 www.0214.live 而不是 0214.live

Coding SSL

pages 服务里面 直接开启 https 就行… 证书都不用你自己申请….. 简单….