git学习记录(二)——开始git项目

随着对git不断使用,逐步进行学习和理解,现把学习整理成一系列基础内容,供大家参考和讨论。本篇介绍如何开始开展git项目,主要包括:

  • 开始一个git项目
  • 提交变更过程

一、如何开始介入git项目(以下是在mac下范例):

  1. 方式一:创建git项目
    1) 将指定目录成为git项目,两种形式:

    • 进入目录,运行git init
    • 运行 git init <要加入git的目录>,eg: git init ~/test

    2) git项目根目录下会生成.git的相关文件,见下图:
  2. 方式二:下载已有的git仓库
    1)从远端服务器上下载已有的项目,两种形式:

    • 多数使用:git clone [url]
    • 也可使用:git clone [url] [renameDir],可以为项目目录重新命名或者为解决下载项目多份发生冲突

    两种形式区别:第一个与服务器上下载内容一样的,第二个对下载的内容的目录进行了重命名

    2)分别使用两种方式,见下图,产生两个文件目录:

    3)对于下载的url,git可以使用四种协议来传输数据:本地传输,SSH协议,Git协议和HTTP协议

    • 一般使用SSH协议和HTTP协议较多,上面的例子中使用SSH协议
    • 想要了解更多协议相关内容,可查看服务器上git协议

    4) git clone下载的项目,是可查看,上传到服务器的所有git操作记录,包括对项目操作的任何人的任何操作(eg:查看历史提交,各分支情况等)

    • 因为git clone时,把项目下所有操作记录的.git目录完整copy

tips:
1.若忘记本地git的下载目录,可以从 项目主目录/.git/config 文件种查看远程服务端地址
2.了解更多可查看上一篇git学习记录(一)——git工作原理(在下面的操作中,不理解也可多翻看)

二、开始git操作——提交变更
主要操作: 提交到本地仓库和推送到远程仓库

1.提交修改变更到本地仓库,命令:

  • git add .
  • git commit -m "注释信息"

1) 命令:git add ,有两个作用:

  • 作用一:把新文件添加到git管理中(添加到索引index中),git add [文件名列表]

实际操作

  • 说明
    1.上图实例,添加两个文件,一个文件进行提交(git add ),一个不提交
    2.使用git status查看各个文件状态(没提交的没有添加到索引中,eg:test2.txt)

tips:只有将文件加入到索引中,这个文件才会收到git的监管,从而进行版本控制

  • 作用二:提交修改,更新索引(index)信息
    下面实例中,对文件进行修改,可查看两次git diff内容区别
    • 第一次:将test2.txt加入到git管理中(git add test2.txt),然后添加内容“Hello world!”:
      使用git diff查看,下图所示(与index记录有差异):
    • 第二次:使用git add test2.txt提交修改

      使用git diff查看下图所示(无差异,提交成功):

tips:一般使用git add .(把当前工作目录都提交),还可以使用git add * 一样的效果

2)命令:git commit -m "注释信息",作用是将内容真正存储到本地仓库

注释信息很重要,要简练清晰,为代码维护和团队合作提供重要参考依据

  • -m 是为提供提交注释,若忘记写,git会自动给你打开一个编辑器引导你提交信息,最好养成直接加-m的习惯
  • 下面是对文件进行修改后,commit前后,查看本地文件与本地仓库的不同(使用git diff HEAD查看),操作步骤如下:
  • 使用git diff HEAD查看情况:
    第一次,如下图是有差异;第二次没有差异(没有截图)

tips:
1.本地仓库中最新存储内容是由HEAD指针指向的,所以,git diff HEAD无差异时,即工作目录与本地仓库内容一致
2.特殊写法:git commit -a 文件名
1)对已加入git管理的文件,一步提交到本地仓库(自动执行git add)
2)新增加文件,不可这样,git必须先执行git add

3)辅助命令:git status,查看本地文件目录与索引(index)的状态

  • 除上述用法,还可加参数“-s” , git status -s以简短的形式输出内容
  • 下图中,依次是test3.txt没有加入git,加入git,对test3.txt进行修改,三个状态变化
    1)??表示没有加入到git;
    2)"A "表示缓存中新增状态,并且与本地一致;

    3)"AM"表示表示索引中新增状态,但本地文件已修改;

4)辅助命令:git diff(实例见上)

  • git diff :查看索引(index)与本地工作目录的区别
  • git diff HEAD: 查看本地仓库与与本地工作目录的区别

2.推送到远程仓库

  • 命令:git push [alias] [branch]
    • alias是远程仓库的别名,branch是要上传的分支
    • alias和branch的对应关系,可到.git文件夹下config文件查看,一般只是用一对,多对应关系不多用
    • 只运行git push,是按照默认配置推送
    • 从远程git clone的项目,默认:git push origin master

1)本地新建的git项目,远程仓库需手动添加(以github为例)

  • 添加远程仓库(eg:git@github.com:greatjing/git_exercise.git)
    • 先在远程服务端(github)上新建一个项目*(也可是其他,比如公司类的服务端),实例操作如下:


2)将本地git项目上传到对应的远程仓库:

  • 步骤一:进入本地git项目目录
  • 步骤二:git remote add [alias] [url] ,为远程仓库添加别名“alias”,url是在远程仓库中新建地址
  • 步骤三:git push -u [alias] [branch],推送本地的“branch”分支到远程仓库“alias”
  • 操作实例如下:(ps:test_0926已加入git)

1.上图中第一次向远程仓库推送失败,因为本地的项目中是空文件,git不允许推送空内容
2.若上一次push后,远程仓库有新变更,此次push会不成功,需要pull远程仓库内容与本地内容merge,再push提交
3.必须对远程仓库有写权限才能push。公司的仓库可以申请,一般对开源项目push,需要申请合并,仓库管理员去merge
详细见下一节:零基础学习git(三)——代码拉取,回滚和撤销

3)其他

  • 列出远程仓库
    • git remote ,列出远程仓库别名
    • git remote -v,列出别名的实际地址

    上图列了两个链接,因GIT为每个远程仓库分别添加推送和获取的链接,为读写使用不同协议,没有特殊要求链接都是一致的

  • 删除远程仓库
    • git remote rm [alias]
  • 远程仓库重命名
    • git remote rename [oldname] [newname]
  • 显示远程仓库与本地仓库同步情况
    • git remote show [alias]

参考:
1、https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80-%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93%E7%9A%84%E4%BD%BF%E7%94%A8
2、https://segmentfault.com/a/1190000002783245

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