##上传下载
###如何上传(推送数据到远程仓库)
项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单: git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到 origin 服务器上(再次说明下,克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令:
$ git push origin master
只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任务。如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回。你必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。
###如何下载(抓取远程仓库数据到本地仓库)
别人往远程仓库中提交了若干更新,如何将别人的更新拉取到我们的本地呢?可以使用
$ git pull [远程仓库链接]
这样就可以从远程仓库自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。
###解决冲突
如果在你推数据前,已经有其他人推送了若干更新,那你的推送操作就会被驳回,此时,我们需要先使用 git pull 将远程仓库的更新抓取下来,但是如果他们修改的和你的是用一个文件的同一块区域的话,使用 git pull 会提示有冲突:
$ git pull
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
然后我们可以使用 git status 命令查看是哪些文件产生了冲突,然后直接编辑冲突文件即可。
修改完冲突文件之后,使用 git add 将文件添加到暂存区,表示文件冲突已经解决。
最后再使用 git commit 命令提交修改,然后就可以再用 git push 推送到远程仓库中了。
###避免冲突
-
一般clone下来之后,只有默认的一个master分支,我们不应该直接在这上面工作,而是另外开一条专门用于开发的分支出来: git checkout -b dev 然后就可以安心地在这个dev分支上工作了
-
确保你修改的代码都是自己负责项目下,或者说你的两次提交之间,没有其他人来改相同项目下的代码
-
在dev上开发完毕之后,切换回master分支:git checkout master ,拉取远程仓库的更新:git pull origin master,然后再 git merge dev 将dev分支合并到master,最后就可以 git push 将更新推送到远程仓库了,如果此时还没有人往远程仓库提交更新,命令会如期执行,否则出现冲突的话,就再按上面解决冲突的步骤处理冲突了