git 团队协作 使用GitHub push pull clone

git 团队协作 使用GitHub

.

本地库 项目经理 远程库 本地库 程序员 push par [1] clone par [2] push par [3] pull par [4] 本地库 项目经理 远程库 本地库 程序员
  1. 项目经理创建本地库,最开始远程库无任何内容,需由项目经理将本地库中的文件、目录、历史记录推送到远程库
  2. 程序员将远程库的内容克隆到本地库,下载远程库中的内容,同时会将本地化库初始化好,有初始化本地库的操作
  3. 程序员将写好的代码提交到本地库,再推送到远程库,但不能随意推送,远程库是由项目经理创建的,需先加入团队,才有权限推送
  4. 程序员提交后,项目经理再将程序员提交的内容拉取到本地

初始化本地库

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远程库

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.

克隆的作用:

  1. 初始化本地库
  2. 将远程库内容完整的克隆到本地
  3. 自动创建远程库别名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.
    

团队冲突

Alice 远程库 Bob 双方下载文件 push Demo push Demo par [推送失败] pull拉取后,双方人为决定最终内容 Alice 远程库 Bob

当双方推送同一个文件时会发生冲突,

SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master|MERGING) #冲突状态
$ cat Demo.txt
123
<<<<<<< HEAD
Alice增加内容
=======
Bob增加内容
>>>>>>> ***

冲突情况下,先进行git pull拉取Demo,人为吵架决定最终内容

posted @ 2021-08-01 17:56  SKPrimin  阅读(92)  评论(0编辑  收藏  举报