团队内协作
跨团队协作
GitHub 操作
GitHub 网址:https://github.com/
此处使用 GitHub 进行演示团队协作机制;若使用 Gitee,操作类似
创建远程仓库
登录Github,点击+
号,选择New repository
输入仓库名称后,点击Create repository
即可完成创建
创建好后,复制HTTP地址
远程仓库操作
命令名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 创建别名 |
git remote show 别名 | 检查别名 |
git remote set-url 别名 远程地址 | 修改别名 |
git remote remove 别名 | 删除别名 |
git remote rename 旧别名 新别名 | 重命名别名 |
git push 别名 本地分支名 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
创建远程仓库别名
1)基本语法
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址
2)案例实操
Aiw@DESKTOP-2K268H6 MINGW64 /e/Git-Space/git-demo (master)
$ git remote -v
Aiw@DESKTOP-2K268H6 MINGW64 /e/Git-Space/git-demo (master)
$ git remote add git-demo https://github.com/Aiw-nine/git-demo.git
Aiw@DESKTOP-2K268H6 MINGW64 /e/Git-Space/git-demo (master)
$ git remote -v
git-demo https://github.com/Aiw-nine/git-demo.git (fetch)
git-demo https://github.com/Aiw-nine/git-demo.git (push)
Aiw@DESKTOP-2K268H6 MINGW64 /e/Git-Space/git-demo (master)
$ git remote show git-demo
* remote git-demo
Fetch URL: https://github.com/Aiw-nine/git-demo.git
Push URL: https://github.com/Aiw-nine/git-demo.git
HEAD branch: master
Remote branch:
master new (next fetch will store in remotes/git-demo)
Local ref configured for 'git push':
master pushes to master (local out of date)
出现两个别名,是因为既可以推送(push),也可以拉取(clone、pull)
推送本地分支到远程仓库
1)基本语法
git push 别名 本地分支名
若未设置仓库别名,则默认命令为git push origin 本地分支名
2)案例实操
Aiw@DESKTOP-2K268H6 MINGW64 /e/Git-Space/git-demo (master)
$ git push git-demo master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 6 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 300 bytes | 300.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/Aiw-nine/git-demo.git
a984f2d..a485aed master -> master
第一次push时,会弹出登录窗口,点击登录进行授权。
若是创建的仓库不为空(如含readme.md等文件),则会出现问题,就是远程库与本地库不一致造成的,把远程库同步到本地库,命令如下:
git pull --rebase git-demo master
此时发现已将 master 分支上的内容推送到 GitHub 创建的远程仓库。
拉取远程仓库到本地库
1)基本语法
git pull 远程库地址别名 远程分支名
若未设置仓库别名,则默认命令为git pull origin 远程分支名
2)案例实操
此处直接在GitHub网页端修改文件,进行提交
此时本地库和远程库不是同步状态,此时需要拉取远程库代码到本地,进行同步操作。
Aiw@DESKTOP-2K268H6 MINGW64 /e/Git-Space/git-demo (master)
$ git pull git-demo master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 727 bytes | 66.00 KiB/s, done.
From https://github.com/Aiw-nine/git-demo
* branch master -> FETCH_HEAD
a485aed..89ce53c master -> git-demo/master
Updating a485aed..89ce53c
Fast-forward
hello.txt | 1 +
1 file changed, 1 insertion(+)
Aiw@DESKTOP-2K268H6 MINGW64 /e/Git-Space/git-demo (master)
$ cat hello.txt
hello, git!!!
hello, git!!!
hello, git!!! master test!
hello, git!!! hot-fix test!
在GitHub网页端直接进行更改。
克隆远程仓库到本地
1)基本语法
git clone 远程地址
使用该命令不需要登录账号;克隆会自动执行init初始化操作
2)案例实操
切换目录,右键打开Git Bash Here
Aiw@DESKTOP-2K268H6 MINGW64 ~/Desktop/clone
$ git clone https://github.com/Aiw-nine/git-demo.git
Cloning into 'git-demo'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 18 (delta 2), reused 10 (delta 0), pack-reused 0
Receiving objects: 100% (18/18), done.
Resolving deltas: 100% (2/2), done.
Aiw@DESKTOP-2K268H6 MINGW64 ~/Desktop/clone
$ cd git-demo
Aiw@DESKTOP-2K268H6 MINGW64 ~/Desktop/clone/git-demo (master)
$ ll -a
total 6
drwxr-xr-x 1 Aiw 197121 0 Aug 7 15:36 ./
drwxr-xr-x 1 Aiw 197121 0 Aug 7 15:36 ../
drwxr-xr-x 1 Aiw 197121 0 Aug 7 15:36 .git/
-rw-r--r-- 1 Aiw 197121 10 Aug 7 15:36 README.md
-rw-r--r-- 1 Aiw 197121 128 Aug 7 15:36 hello.txt
Aiw@DESKTOP-2K268H6 MINGW64 ~/Desktop/clone/git-demo (master)
$ git remote -v
origin https://github.com/Aiw-nine/git-demo.git (fetch)
origin https://github.com/Aiw-nine/git-demo.git (push)
查看结果
小结:clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建本地仓库别名为
origin
团队协作
1)选择邀请合作者
2)填入想要合作的人
输入想要合作的人的username,full name, email
输入后,进行选择,然后点击Add ...
按钮
3)复制地址并通过QQ/微信/钉钉等方式发送给该合伙人
4)在 第二个人 这个账号中的地址栏复制收到邀请的链接,点击接受邀请。示例图如下:
5)成功之后可以在 第二个人 这个账号上看到 git-demo 的远程仓库。
6)第二个人 可以修改内容并 push 到远程仓库。
Aiw@DESKTOP-2K268H6 MINGW64 ~/Desktop/clone/git-demo (master)
$ vim hello.txt
Aiw@DESKTOP-2K268H6 MINGW64 ~/Desktop/clone/git-demo (master)
$ cat hello.txt
hello, git!!!
hello, git!!!
hello, git!!! master test!
hello, git!!! hot-fix test!
在GitHub网页端直接进行更改。
啦啦啦啦啦 ---by 第二个人
Aiw@DESKTOP-2K268H6 MINGW64 ~/Desktop/clone/git-demo (master)
$ git add hello.txt
Aiw@DESKTOP-2K268H6 MINGW64 ~/Desktop/clone/git-demo (master)
$ git commit -m "第二个人进行提交" hello.txt
[master 2ae62d7] 第二个人进行提交
1 file changed, 1 insertion(+)
7)回到 第一个人 的 GitHub 远程仓库中可以看到,最后一次是 第二个人提交的
跨团队协作
1)将远程仓库的地址复制发给邀请跨团队协作的人
2)在别人的 GitHub 账号里的地址栏复制收到的链接,然后点击 Fork 将项目叉到别人自己的本地仓库
叉成功后可以看到当前仓库信息
3)别人就可以在线编辑叉取过来的文件
4)编辑完毕后,填写描述信息并点击左下角绿色按钮提交
5)接下来点击上方的 Pull 请求,并创建一个新的请求
6)回到本人 GitHub 账号可以看到有一个 Pull request 请求
进入到聊天室,可以讨论代码相关内容
7)如果代码没有问题,可以点击 Merge pull reque 合并代码
SSH 免密登录
可以看到远程仓库中还有一个 SSH 的地址,因此也可以使用 SSH 进行访问。
具体操作如下:
Aiw@DESKTOP-2K268H6 MINGW64 ~
$ ssh-keygen -t rsa -C "aiw@1314.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Aiw/.ssh/id_rsa):
Created directory '/c/Users/Aiw/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Aiw/.ssh/id_rsa
Your public key has been saved in /c/Users/Aiw/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:cnBX+jNI+yF6lMp0wqqE5s5grHmM7eiBeMfsmu7MhGA aiw@1314.com
The key's randomart image is:
+---[RSA 3072]----+
| . |
| o |
| . . + |
| + o = |
|.E . S B = |
|*. + * * o + |
|=B= = . + . . |
|+%== . . |
|=B%.o |
+----[SHA256]-----+
Aiw@DESKTOP-2K268H6 MINGW64 ~
$ cat ~/.ssh/id_rsa.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQ(此处省略...)
复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→Settings→SSH and GPG keys->New SSH key,示例图如下:
点击Add SSH key
按钮即可;接下来再往远程仓库 push 东西的时候使用 SSH 连接就不需要登录了。