update

[update-2019-08-10]

前戏

下载安装 Git.

当然,下面内容不只适用于 Gitee。Github、Coding,这类 Git 协作管理工具原理都一样。

配置

全局配置

该配置是全局配置,对于不同的管理工具,只要用的一套邮箱和密码,都可以使用。

git config --global user.name "在gitee的名字或昵称" git config --global user.email "gitee注册使用的邮箱"

针对项目配置

需要在项目根目录下进行配置。

git config user.name "Your Name"

git config user.email "Your email"

注意:如果你配置了全局的用户名和邮箱,仍可以针对项目进行配置,Git 会优先考虑针对项目的配置,找不到才会去使用全局的配置。

查看当前配置

git config --list 查看当前配置

本地生成 SSH 公钥,并在 Gitee 配置.

Gitee帮助文件

在配置好用户名和密码后,可以进行生成公钥。

为什么要配置 SSH 公钥

配置 ssh 公钥后,本地仓库与远程仓库可以通过 ssh 链接进行交互(pull,push 等操作)。

ssh 链接示例: git@github.com:hqweay/MarkAll.git

反过来说,如果你通过 ssh 链接关联远程仓库与本地仓库,就必须配置 ssh 公钥,才能进行 Git 操作。

另一方面,如果你通过 https 链接进行关联,你就无需配置 ssh 公钥。

https 链接示例:https://github.com/hqweay/MarkAll.git

若你通过 https 链接对本地仓库和远程仓库进行关联,在进行 push 操作时,Git 将会提示你手动输入密码以验证权限。

所以通过 SSH 与 https 链接关联远程仓库库与本地仓库的区别就显而易见了,通过 SSH 链接,一次配置后以后就无须重复输入密码,同时,不必输入密码,也在一定程度上保证了安全。

生成公钥

ssh-keygen -t rsa -C "xxxxx@xxxxx.com(你的邮箱)"

连续按三次回车,使用默认配置即可

查询公钥

cat ~/.ssh/id_rsa.pub

这一步是查询公钥,把显示的东西全复制下来即可。

如果操作系统是 Windows,可以打开 C:\用户\Users\.ssh\id_rsa.pub 文件查看公钥。

配置

然后把公钥粘贴到 Github 这类网站配置 SSH 公钥的的对应位置即可。

常用命令

将本地库与远程库关联

git remote add origin git@github.com:hqweay/MarkAll.git

origin 为本地库的关联名

一个本地库关联多个远程库,就是通过更改origin这一项的名字实现的。

比如:

git remote add One git@github.com:hqweay/MarkAll.git

git remote add Two git@github.com:hqweay/MarkAll.git

就实现了一个本地库关联两个远程项目,需要进行操作时便分别通过名称One,Two来操作。

关联其它操作

删除关联 git remote rm origin

查询关联 git remote -v

clone 某分支

默认克隆 master 到本地:git clone git@github.com:hqweay/MarkAll.git -b 1.0

git clone git@github.com:hqweay/MarkAll.git -b 1.0

回退到某版本

  1. 使用 git log 命令查看所有的历史版本,获取某个历史版本的 id,假设查到历史版本的 id 是 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96。
  2. git reset –hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
  3. 把修改推到远程服务器git push -f -u origin master

强制 push

git push -f -u origin master

强制 push,之前的 commit 都会被清除…

git push -f -u origin master-f 是命令 --force 的缩写,意味着忽略冲突,将本地的内容强制推送,覆盖远程仓库。

-u 的意思是把当前使用的仓库 origin master 设置为默认仓库。

设为默认仓库后,下次就只需要操作 git push 而无需输入全部命令 git push origin master 达到推送的效果。

同步云端代码至本地

git pull origin 分支名

其他

  • 删除本地某次 commit(比如最近一次不小心把 密码 add 了)
  • 删除线上某次 commit

一些坑

修改代码后 push 失败

(协作项目其他人已取得管理权限等同理…)

Authentication failed for “https://gitee.com....."

输入账号密码登录,出现这类报错。

PS:仓库以 https 关联就可能出现这个错,搜索到的解决方式是建议用 SSH 关联。

使用 SSH 公钥可以让你在你的电脑和码云通讯的时候使用安全连接(Git 的 remote 要使用 SSH 地址) gitee官方说明

以 https 方式克隆下来的仓库默认以 https 方式与仓库关联,故应当重新关联。 先查询

git remote -v 若为

origin https://gitee.com/hqweay/BookShopping.git (fetch) origin https://gitee.com/hqweay/BookShopping.git (push)

这类信息,则说明为 https 关联。

先删除关联

git remote rm 关联库名

查询是否删除成功

git remote -v //无信息则说明删除关联成功

再用 SSH 链接绑定,

git remote add origin git@gitee.com:hqweay/BookShopping.git

查询,若信息为

origin git@gitee.com:hqweay/BookShopping.git (fetch) origin git@gitee.com:hqweay/BookShopping.git (push)

则用 SSH 链接关联成功,尝试 push 一下。

push 不成功

push 不成功还有可能是 gitee 项目(远程仓库)中有本地项目不存在的文件,比如建立 gitee 项目时引入了 readme.md

git pull –rebase origin master

执行该命令,让远程仓库代码合并到本地。

再执行 push

提示本地项目没有文件

执行push命令前需要

git add .

git commit -m “提交说明”