git 团队协作 使用GitHub push pull clone
git 团队协作 使用GitHub
.
- 项目经理创建本地库,最开始远程库无任何内容,需由项目经理将本地库中的文件、目录、历史记录推送到远程库
- 程序员将远程库的内容克隆到本地库,下载远程库中的内容,同时会将本地化库初始化好,有初始化本地库的操作
- 程序员将写好的代码提交到本地库,再推送到远程库,但不能随意推送,远程库是由项目经理创建的,需先加入团队,才有权限推送
- 程序员提交后,项目经理再将程序员提交的内容拉取到本地
初始化本地库
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp
$ git init
Initialized empty Git repository in D:/GitResp/.git/
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master)
$ git add Demo.txt
fatal: pathspec 'Demo.txt' did not match any files
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master)
$ git add Demo.txt
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master)
$ git commit -m "增加"
[master (root-commit) 702bd38] 增加
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 Demo.txt
创建GitHub
远程库
- 登录GitHub -> 右上角 New repository
Repository name一般与本地库名称相同,完成相应设置后点击Creat repository即创建成功
git remote
远程库本地取别名
在github
主页左侧即可查看自己的远程库,点击进入即可找到远程库地址"https://github.com/[Username]/GitResp.git",远程库地址较长,可以在Git本地将地址保存,使用git remote
给仓库取取别名origin
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master)
$ git remote add origin https://github.com/[Username]/GitResp.git
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master)
$ git remote -v #查看
origin https://github.com/[Username]/GitResp.git (fetch)
origin https://github.com/[Username]/GitResp.git (push)
1 push
git push [远程库别名] [推送的分支]
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master)
$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 207 bytes | 103.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/SKPrimin/GitResp.git
* [new branch] master -> master
推送成功后,可查看远程库中内容
2 clone
git clone [远程库地址]
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/Documents/GitHub
$ git clone https://github.com/SKPrimin/GitResp.git
Cloning into 'GitResp'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
克隆的作用:
- 初始化本地库
- 将远程库内容完整的克隆到本地
- 自动创建远程库别名origin
2-3加入团队
由管理员进入设置页面邀请成员:settings ->Manage access -> Invite a collaborator,https://github.com/[Username]/GitResp/settings/access
选中成员后复制邀请链接https://github.com/[Username]/GitResp/invitations
被邀请人在输入网址后即可点击Accept invitation加入团队
3 push
程序员在克隆项目后在本地进行操作
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/Documents/GitHub/GitResp (master)
$ git add Demo2.txt
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/Documents/GitHub/GitResp (master)
$ git commit -m "新建了Demo2.txt" Demo2.txt
[master 2feefca] 新建了Demo2.txt
1 file changed, 1 insertion(+)
create mode 100644 Demo2.txt
git push [远程库别名] [远程库分支]
完成后再推送到远程库
此时会要求输入github
账号密码,如果已经加入团队,即可成功推送
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/Documents/GitHub/GitResp (master)
$ git push origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 313 bytes | 156.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/SKPrimin/GitResp.git
702bd38..2feefca master -> master
4 pull
1 fetch/merge
-
fetch
拉取,由项目管理员进行拉取SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master) $ git fetch origin master remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 293 bytes | 18.00 KiB/s, done. From https://github.com/SKPrimin/GitResp * branch master -> FETCH_HEAD 702bd38..2feefca master -> origin/master
但执行后仅是将远程库内容下载到本地,工作区文件并未更新
-
merge
合并,在合并前可先前往远程库查看内容SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master) $ git checkout origin/master SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp ((2feefca...)) $ ls -l total 1 -rw-r--r-- 1 SKPrimin 197121 0 Aug 1 12:03 Demo.txt -rw-r--r-- 1 SKPrimin 197121 29 Aug 1 17:21 Demo2.txt SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp ((2feefca...)) $ cat Demo.txt SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp ((2feefca...)) $ cat Demo2.txt Demo2文件,程序员创建
切换回master本地库后进行合并
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/GitResp (master) $ git merge origin/master Updating 702bd38..2feefca Fast-forward Demo2.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 Demo2.txt
2 pull
-
git pull [远程库别名] [远程库分支]
远程库的拉取可以直接用pull完成,但代码较为简单时可以一步到位$ git pull origin master From https://github.com/SKPrimin/GitResp * branch master -> FETCH_HEAD Already up to date.
团队冲突
当双方推送同一个文件时会发生冲突,
SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master|MERGING) #冲突状态
$ cat Demo.txt
123
<<<<<<< HEAD
Alice增加内容
=======
Bob增加内容
>>>>>>> ***
冲突情况下,先进行git pull
拉取Demo,人为吵架决定最终内容