blog
blog copied to clipboard
Git_6 远程仓库的使用(以 GitHub 为例)(git init、remote、add、commit、push)
远程仓库的使用:
远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。 管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。
一、向 Github 提交代码:
向 Github 提交代码或无需密码拉取 GitHub 代码:在本机生成 SSH 密钥对,将 .pub
公钥配置到 https://github.com/settings/keys ,参考:
- https://docs.github.com/en/authentication/connecting-to-github-with-ssh
- https://help.github.com/cn/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account
- https://git-scm.com/book/zh/v2/服务器上的-Git-生成-SSH-公钥#_generate_ssh_key
配置好本地和远程 GitHub 的 SSH :将本地主机的 ~/.ssh/id_rsa.pub
公钥内容,复制添加到 GitHub => Settings => SSH Keys(添加 SSH key 成功之后,我们才有权限向 GitHub 上我们自己的项目提交代码):
SSH key 添加成功之后,输入 ssh -T [email protected]
进行测试,如果出现以下提示证添加成功了:
Hi FatliTalk! You've successfully authenticated, but GitHub does not provide shell access.
首先,在 GitHub 上新建一个(不勾选初始化)仓库,然后 GitHub 就会提供一个 git 提交代码的教程页面,根据教程把本地已经完成 git init
初始化的代码仓库提交到远程 GitHub 仓库。
- 添加远程仓库,语法:
git remote add <shortname> <url>
:添加一个新的远程 Git 仓库,同时指定一个用来引用的简写(后面的操作命令可以用 shortname 代替 url )。 -
git push -u <remote name> <branch name>
,参数 -u 表示(本地分支与远程主机分支)建立追踪关系(tracking)。注:方法一中,在git clone
的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的 master 分支自动"追踪" origin/master 分支。
注: origin 是给这个项目的远程仓库起的名字,是的,名字你可以随便取,只不过大家公认的只有一个远程仓库时名字就是 origin ,为什么要给远程仓库取名字?因为我们可能一个项目有多个远程仓库?比如 GitHub 一个,比如公司一个,这样的话提交到不同的远程仓库就需要指定不同的仓库名字了。
实例:
$ # push an existing repository from the command line
$ # 此处使用 https 协议传输需要验证用户名和密码,使用 git 协议传输则不需要(已验证ssh)
$ git remote add github [email protected]:FatliTalk/wepost.git
$ # 使用 git remote -v 命令可查看本地仓库关联远程仓库的状态列表
$ git push -u github master
1. 提交项目至 GitHub(其他方法一)
- Clone 自己的项目:
git clone [email protected]:用户名/仓库名.git
- 在 Clone 的仓库目录下任意修改或者添加文件
- 然后提交更新到 Git 仓库:
git commit
- 执行:
git push origin master
提交至 GitHub
推送项目到远程服务器,语法: git push [remote-name] [branch-name]
注:你可以把 clone 命令理解为高级点的复制,这个时候该项目本身就已经是一个 git 仓库了,不需要执行 git init
进行初始化,而且甚至都已经关联好了远程仓库。
2. 提交项目至 GitHub(其他方法二)
此方法适用于:使用 GitHub 客户端的方式,几乎适用所有场景,并且简单、直观。
三、提交项目至 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
实例:
➜ /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
-
git remote -v
:显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL -
git remote show [remote-name]
:查看某一个远程仓库的更多信息
-
五、远程仓库的重命名与移除
重命名:
语法:git remote rename
重命名引用的名字,修改一个远程仓库的简写名
示例:git remote rename a b
将 a 重命名为 b
移除:
语法:git remote rm
移除一个远程仓库 - 你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了
示例:git remote rm a
移除引用为 a 的仓库(不是移除名为 a 的仓库)