1. 从github上推送/拉取仓库
在git分支一章的介绍中,本地的仓库目前存在master主干和dev分支,将该仓库推送到github并从github如何拉取到本地该如何操作?
① 推送:
- 在github上创建一个公共仓库
GitGithubLearn
,创建好仓库后会出现该仓库的链接:
- 使用
git remote add origin https://github.com/pshijie/GitGithubLearn.git
给该远端仓库起一个别名origin
,在之后的拉取操作中也会使用该别名,无需再次添加- 使用
git push origin master/dev
将本地仓库的master/dev
分支推送到GitGithubLearn
仓库,推送完成后,在github可以查看到和本地一样的版本历史记录等信息:
② 拉取:
- 使用
git clone https://github.com/pshijie/GitGithubLearn.git
将远程仓库拉取到本地当前文件夹中。拉取后使用git branch
会发现该本地仓库只有master
主干,没有dev
分支,但是使用git checkout dev
后还是会切换到dev分支的:
2. 协同开发
假设此时在家中电脑中已有项目
testGit
(已经push到github中为GitGithubLearn
),在公司电脑从github中也拉取了项目GitGithubLearn
:先在家开发:
- 切换到
dev
分支:使用git checkout dev
- 进行代码开发:使用
touch a1.py
并进行add
和commit
操作- 将
dev
分支push到远程仓库:使用git push origin dev
,此时进入远程仓库中发现只是在dev
分支上发生了改变,master
上并没有改变:
回到公司继续开发:
切换到
dev
分支:使用git checkout dev
更新家中写的代码:使用
git pull origin dev
将远程仓库的dev
分支代码拉取到本地的dev
分支,此时项目中多了家中写的代码a1.py
进行代码开发:使用
touch a2.py
并进行add
和commit
操作将
dev
分支push到远程仓库:使用git push origin dev
,结果同上述类似等回到家中再重复以上步骤即可。项目开发完毕后,需要进行以下操作:
- 将本地
dev
分支合并到本地master
中:使用git checkeout dev
和git merge dev
完成合并- 再将本地
master
合并到本地dev
分支,确保这两个分支都是最新的代码- 将本地
master/dev
推送到远程仓库的master/dev
:使用git push origin master/dev
tips:
git push origin master:psj
:其中master
表示本地要上传代码的分支名称,psj
表示要上传到远程的指定分支名称,如果远程仓库没有会自动创建git pull origin dev
等同于git fetch origin dev
和git merge origin/dev
:
图中黄色部分表示本地和远程仓库的交互过程,
git fetch origin dev
表示取origin仓库的dev
分支到本地版本库。git merge origin/dev
表示合并的是origin仓库的dev
分支到本地工作区
3. 解决冲突
- 在家对
a1.py
文件进行了修改,但是只进行了add
和commit
,并没有push到远程仓库- 去公司后也对
a1.py
文件进行了修改,进行了add
和commit
,并且push
到了远程仓库- 回到家中拉取远程仓库的代码,此时会出现冲突:
需要手动去解决冲突: