Git远程协作
2019-03-19 本文已影响0人
shz_Minato
Git远程协作
基本流程
A 将本地的commits推送至 远端
B 从远端 拉取至 本地
B 修改拉取的commits,然后 推送至 远端
情景一:A 推送 B拉取
该场景下 A和B都没有 额外的操作
A 将本地的commits 推送至 远端
新建文件 echo ‘A add the fisrt line’ -> hello.txt
将hello.txt提交并推送至 远端
git add .
git commit -m 'A add the first line'
git push -u origin master
B 将远端的commits 拉到 本地
git pull <remote> <branch>
remote:是远程的分支
branch:要拉到的分支
git pull包含了两步操作:
第一:将远端的 commits 拉取到本地 fetch
第二:将本地和拉取到的 合并 merge
git pull origin master
$ git pull origin master
From 远端URL
* branch master -> FETCH_HEAD //mater 指向了 FETCH_HEAD 即 进行了merge
//FETCH_HEAD 就是拉取到的HEAD
B git log
Author:
Date:
A add the first line //这就是 远端的commit信息,
流程图
image
情景二:B将修改的文件 push 至远端
该场景下:
B 首先了拉取了 文件,并对文件进行了 修改
然后 将修改的commit信息 推送至远端
B 修改hello.txt文件 并将文件 commit
vi hello.txt
B add the first line
git commit -am 'B add the first line'
B 将修改 推送至 远端
git push -u origin master
此时 git status
$ git status
On branch master
Your branch is up-to-date with 'origin/master'. //本地分支和远端是一致的
nothing to commit, working tree clean
流程图
image
情景三:A将修改的文件 push 至远端
此时远端已经比A多了一次提交
A 修改hello.txt文件 并 提交
vi hello.txt
A add the second line
git commit -am 'A add the second line'
A push 自己的commit
$ git push
To 远程
! [rejected] master -> master (fetch first) //拒绝 首先要 fetch
error: failed to push some refs to '' //错误:推送至远程失败
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
//由于远程包含了本地没有的工作,因此 推送失败。
//通常 是由于 别的仓库推送了 相同的 引用。
//你可能需要 合并 远程的 改变在 push 之前
//因此远端 比A本地 多了一次 提交 并且 改变的都是同一行 内容
//需要,处理这些相同的内容,在push之前 就需要 先pull一下。
git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From
827ed67..2aaca86 master -> origin/master //远程的版本信息已经 fetch下来
Auto-merging hello.txt //自动合并 hello.txt
CONFLICT (content): Merge conflict in hello.txt //合并冲突 ----> 由于 修改的是同一行
Automatic merge failed; fix conflicts and then commit the result. //需要解决冲突 merge失败
vi 命令
dd 删除行
2,4d 删除2,3,4行
冲突解决后
git add hello.txt
git commit
git push
流程分析
image