Git多人协作指南

商业项目基本使用第三方版本控制工具,例如sourcetree,gitextension等,文章供初学者参考。


创建本地代码仓库并同步到远端Github

【1】. 创建本地仓库:

  1. 首先你得找到你的项目文件夹。然后调出Git Bash界面。
  2. 然后输入 【git init】来将项目文件夹创建成本地仓库。等待命令行执行完。
  3. 接着输入【git add README.md】,向本地仓库添加readme。等待命令行执行完。
  4. 接着输入 【git add .】 ,像本地仓库添加修改文件。等待命令行执行完。
    再接着输入【git commit -m "XX这里填修改提示XX"】,向本地仓库提交修改。等待命令行执行完。


    右击鼠标点击Git Bash Here

    GitBash

【2】.创建远端Github仓库
登陆github注册账号后创建GitHub仓库。然后把项目名打上,【注意,先不要点击创建README】

创建github仓库

填写

【3】.将本地仓库与远端相连接
打开 Git Bash , 继续输入【 git remote add origin XXXX 】XXX替换为:
你创建好的github地址

【4】.将本地仓库同步到远端
打开 Git Bash输入 【git push -u origin master】 。等待命令行执行完成。


到此位置,你已经能够将自己本地的项目文件上传到Github了。现在,反过来,怎么从github上获取项目到本地。


获取 Git 仓库

如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源项目贡献自己的一份力,这时就要用到 git clone 命令。
在你希望存放的更目录打开 Git Bash ,输入命令【git clone XXX】XXX替换为想要拷贝的远端仓库的网址。
命令执行完了之后,你就能看见一个一摸一样的项目文件夹。

到这里,仓库的双端同步已经完成。项目小组已经有相同项目文件的拷
贝。


接下来,要讲小组工作中的重点:提交更新、合并、拉取等等操作


更新

在将这部分时,首先要了解的是:工作目录下的每一个文件都不外乎已跟踪或未跟踪这两种状态。
已跟踪的文件是已经被纳入过版本控制的文件,工作一段时间后,它可以是修改/未修改的。未跟踪的就是工作中新增的文件还没纳入版本控制的文件。初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

现在你修改了文件,执行【git add .】将修改纳入暂存,【 git status】可以让你让看项目状态,在Changes to be committed:下能看到暂存的文件名。

简化输出status

无需纳入git管理的东西,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。 执行【git .gitignore】,生成文件,打开文件输入要忽略的文件或目录结构,一个一行。

提交更新
完成将所有修改过或者新增的文件用 【git add .】添加到暂存区。然后使用【git commit -u 'XXX'】。【git commit -a -m 'xxx'】可以直接跳过添加暂存区的过程将跟踪的文件直接提交。
移除文件
【git rm xxxx】在暂存区中删除。
移动文件
【git mv file_from file_to】
查看提交历史
【git log -p -2】显示最近2次提交的内容差异, -p/-2 是可选参数

log

最新历史显示在最上面。

撤消操作
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:
【git commit --amend】这个将会将你重新修改的文件提交到暂存区。

合并提交

撤消对文件的修改
两种情况:
一种是filename自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是filename已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令【git checkout -- file】。
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令【git reset HEAD file】,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,版本回退,不过前提是没有推送到远程库。
注意:这条命令是覆盖性的,他会由原来的文件覆盖你修改过的文件。

拉取

添加远程仓库
【git remote add <shortname> <url>】
现在你可以在命令行中使用对应的缩写来代替整个 URL。
例如,如果你想拉取 Paul 的仓库中有但你没有的信息,可以运行 git fetch pb:
现在 Paul 的 master 分支可以在本地通过 pb/master 访问到 - 你可以将它合并到自己的某个分支中,或者如果你想要查看它的话,可以检出一个指向该点的本地分支。
从远程仓库中抓取与拉取
【git fetch <remote-name>】
这个命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

分支

使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
创建分支
【git branch <name>】
切换分支
【git checkout <branch-name>】
在分支中提交的修改在其他分支中是看不见的,需要合并分支,才行。
注:在你切换分支之前,保持好一个干净的状态。

合并分支
【git merge <branch name>】

合并分支界面

删除分支
在分支利用完之后,应该及时删除。【git branch -d <branch name>】

遇到冲突时的分支合并
有时候合并操作不会如此顺利。 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。

冲突

这个时候,你需要【git status】来查看因冲突而未合并提交的文件。并且打开这些包含冲突的文件然后手动解决冲突。
这里推荐一个Diff/Merge工具,可以更方便的查看Diff/Merge信息。
SourceGear MergeDiff


到此,多人协作流程常识讲解完毕。查看更多请翻阅官方文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,853评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,902评论 0 11
  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,494评论 0 13
  • 今天谈谈什么是逻辑吧! 逻辑这东西太重要了,同时也是一个完全不能避开的话题。 逻辑这东西和理性好像是双胞胎姐妹,傻...
    Jimuboy阅读 255评论 0 0
  • 女儿不止一次抱怨:“我什么时候可以长大到可以嫁出去啊?” 最近一年,她心情不好的时候,不时会脱口而出这样的话。继续...
    明媚月光阅读 236评论 8 7