Qingquan-Li / blog

My Blog
https://Qingquan-Li.github.io/blog/
132 stars 16 forks source link

Git_6 远程仓库的使用(以 GitHub 为例)(git init、remote、add、commit、push) #66

Open Qingquan-Li opened 7 years ago

Qingquan-Li commented 7 years ago

远程仓库的使用:

远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。 管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。


一、向 Github 提交代码:

向 Github 提交代码或无需密码拉取 GitHub 代码:在本机生成 SSH 密钥对,将 .pub 公钥配置到 https://github.com/settings/keys ,参考:

配置好本地和远程 GitHub 的 SSH :将本地主机的 ~/.ssh/id_rsa.pub 公钥内容,复制添加到 GitHub => Settings => SSH Keys(添加 SSH key 成功之后,我们才有权限向 GitHub 上我们自己的项目提交代码):

SSH key 添加成功之后,输入 ssh -T git@github.com 进行测试,如果出现以下提示证添加成功了:

Hi FatliTalk! You've successfully authenticated, but GitHub does not provide shell access.


首先,在 GitHub 上新建一个(不勾选初始化)仓库,然后 GitHub 就会提供一个 git 提交代码的教程页面,根据教程把本地已经完成 git init 初始化的代码仓库提交到远程 GitHub 仓库。


github-syytest


注: origin 是给这个项目的远程仓库起的名字,是的,名字你可以随便取,只不过大家公认的只有一个远程仓库时名字就是 origin ,为什么要给远程仓库取名字?因为我们可能一个项目有多个远程仓库?比如 GitHub 一个,比如公司一个,这样的话提交到不同的远程仓库就需要指定不同的仓库名字了。

实例:

$ # push an existing repository from the command line
$ # 此处使用 https 协议传输需要验证用户名和密码,使用 git 协议传输则不需要(已验证ssh)
$ git remote add github git@github.com:FatliTalk/wepost.git
$ # 使用 git remote -v 命令可查看本地仓库关联远程仓库的状态列表
$ git push -u github master


1. 提交项目至 GitHub(其他方法一)

  1. Clone 自己的项目: git clone git@github.com:用户名/仓库名.git
  2. 在 Clone 的仓库目录下任意修改或者添加文件
  3. 然后提交更新到 Git 仓库:git commit
  4. 执行: git push origin master 提交至 GitHub

推送项目到远程服务器,语法: git push [remote-name] [branch-name]

注:你可以把 clone 命令理解为高级点的复制,这个时候该项目本身就已经是一个 git 仓库了,不需要执行 git init 进行初始化,而且甚至都已经关联好了远程仓库。


2. 提交项目至 GitHub(其他方法二)

此方法适用于:使用 GitHub 客户端的方式,几乎适用所有场景,并且简单、直观。

github for macos




三、提交项目至 TGit(dev分支)

和提交代码到 GitHub 基本一样。

Create a new repository:

git clone https://git.qcloud.com/ccb_1106478060/helloworld.git
cd helloworld
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Existing folder or Git repository:

cd existing_folder
git init
git remote add origin https://git.qcloud.com/ccb_1106478060/helloworld.git
git add .
git commit
git push -u origin master


git-push-TGit


实例:

➜  /Users/fatli/miniprogram/syytest > git init
Initialized empty Git repository in /Users/fatli/miniprogram/syytest/.git/
➜  /Users/fatli/miniprogram/syytest git:(master) ✗ > git checkout -b dev
Switched to a new branch 'dev'
➜  /Users/fatli/miniprogram/syytest git:(dev) ✗ > git add .
➜  /Users/fatli/miniprogram/syytest git:(dev) ✗ > git commit -m "first commit"
[dev (root-commit) 153201f] first commit
 56 files changed, 1532 insertions(+)
 create mode 100644 .DS_Store
 create mode 100644 app.js
 # . . . . . .
➜  /Users/fatli/miniprogram/syytest git:(dev) > git remote add origin https://git.qcloud.com/ccb_1106478060/syytest.git
➜  /Users/fatli/miniprogram/syytest git:(dev) > git push -u origin dev
Counting objects: 81, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (65/65), done.
Writing objects: 100% (81/81), 34.97 KiB | 1.94 MiB/s, done.
Total 81 (delta 7), reused 0 (delta 0)
remote: Resolving deltas: 100% (7/7)
remote: Processing changes: done
remote: Updating references: 100% (1/1)
To https://git.qcloud.com/ccb_1106478060/syytest.git
 * [new branch]      dev -> dev
Branch dev set up to track remote branch dev from origin.
➜  /Users/fatli/miniprogram/syytest git:(dev) >



四、查看远程仓库



五、远程仓库的重命名与移除

重命名:

语法:git remote rename 重命名引用的名字,修改一个远程仓库的简写名 示例:git remote rename a b 将 a 重命名为 b

移除:

语法:git remote rm 移除一个远程仓库 - 你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了 示例:git remote rm a 移除引用为 a 的仓库(不是移除名为 a 的仓库)