【GIT学习总结 I】TW常用GIT命令

Markdown写作 + Git版本管理 已成为全球IT互联网公司的主流写作平台,如果你有心投身这一领域从事技术写作,不妨事前学习一下Markdown语法以及Git版本管理的原理与常用指令。在国内的Gitee上搭个自己的repo,练练手。写作工具用顺手了,无疑可以让你有更多时间来了解产品,专注文档构思与写作。

目前已经快入职三个月了,慢慢对GIT不再恐惧,对GIT命令行也熟悉进来。前几天提交对原文档中几个节点的大修改,Merge Master后出现了一大堆Stashed/Staged的文件,以及莫名其妙的错误提示,彻底慌乱了。最后把产品的本地库删除,重新Clone远程库,重新基于远端分支建本地分支...似乎是搞清楚了一些概念。记录一下。

GIT之于文档管理的优势

目前,Markdown文档的版本管理是,基于Master,每个新feature,建立一个分支。Draft完成后,通过BitBucket Create Pull Request(PR) 。将PR发给Reviewer。Git之于文档管理,一个强大的地方是方便文档审阅。

  • 见下图,它清楚地对比出前后两个版本的区别。


    Diff对比
  • Reviewer可以直接在某一行加Comments,并且@相关人员。


    image.png
  • 另外,Git的强大版本管理功能(Versioning)。

    • 多个TW对同一release分支(for example, release_A),同步进行文档写作与维护。各个TW在此分支上建新分支(release_A_Joy)。完成评审后,merge回原始release分支(release_A)中。
    • 在merge时,可能会产生冲突(比如两位TW对同一文件进行了修改,另一位TW在你之前把他的修订merge到(Release_A)了)。不用担心,在你的分支(Release_A_Joy)上,执行pull origin Release_A操作。此时,在VS Code操作界面,会显示出冲突的内容,让你选择是保留你所做的修订(release_A_Joy),还是保留目标分支中的修订(Release_A)。

Git存储区域

Git存储区域

Git常用命令

图解

Git常用命令

常用命令

Clone文档库

cd <本地Repo所在folde>
git clone ssh://git@code.abc.net/pd/xxx.git //只会clone master分支到本地,远端的其它分支是不会clone到本地的

根据远端分支建本地分支

方法1:
Git pull:
Git branch

Git branch后本地并没有显示新branch

Git checkout <分支名>
Git Checkout该分支后Git branch

方法2:
Git branch -r //查看远端分支,保证新分支存在
git checkout -b branchname origin/branchname //建立本地分支,并将它map到远端分支
注意!branchname前"/"

提交本地分支到远端分支

  1. 如果有新增文件,必须先执行该命令
    Git add .

  2. 如果有repo中没有用到的文件,必须先执行删除,否则commit不会成功

Note: 从BitBucket迁移到GitHub后,如果在本地删除了文件,无需执行此步所述操作。

Git rm <文件名>
Git rm -f <文件名> // 如果需要删除之前修改过并且已经放到暂存区域的文件,则必须要用强制删除选项 -f
注意!删除时要带相对路径

  1. 修改以及增加删除的文件从本地暂存区提交到本地库**
    Git commit -m "reason for the commit" //将修改从本地暂存区提交到本地库
    Git commit -am "reason for the commit" //把暂存区的所有被修改或者已删除的文件提交提交到分支,
    注意! : 如果有新增的或是删除的文件,必须在commit前,一定要先执行Git add .以及Git rm

  2. 将本地库修改同步到远端库,新手容易忘记这步!
    Git Push

其它通用指令

  • 在commit前用该命令,查看显示工作区(workspace)与暂存区(stage/index)的状态。使用此命令能看到那些修改被暂存了, 哪些没有
    Git status
  • 显示所有本地分支
    Git branch
  • 显示所有远端分支
    Git branch -r
  • 回退到本地库中的版本,放弃工作区(workspace)中所做修改
    git checkout <file>
    git checkout —整个库会退到本地库版本
  • 删除.git本地库
    1. Enter the local repo folder.
    2. $ rm -rf .git
    3. In File Manager, delete the repo folder.
  • 多个Commit后,如何回到某个Commit (head)的状态
    1. 查看Commit head id
      Git log
    2. 强行回退
      git reset --hard <Commit head IDs>

关于Staged与Stashed files

Staged -- 保存在暂存Stage/Index(缓存区)的文件,也就是完成了git add .的文件,但没有committ。
Stashed--临时需要切换branch,但working区的文件又不想commit,但又想保存在某个地方,以便下次继续开发,可用stash命令,将其暂存在working区的暂存区(并不是stage/index区)。-- PR时会把你所有的commit都显示出来,如果你每做一点点修改,就commit,你的每一次commit记录都会被别人看到。此时,stash命令就比较有用了

文档开发过程中,定期Merge Master内容。

因为Master是总版本,其它writer在不断向其中merge他们的feature分支。提交PR前一定要做Merge操作,一则解决多个writer可能同时修改一个文件产生的冲突,另一则,在GitHub或是BitBucket里查看Diff时才会只标注你所做的修改。
方法一:

  1. (分支a)Git checkout master
  2. (本地master) Git pull
  3. (分支a)Git merge master //merge最新的master
  4. (分支a) Resolve any merge conflicts, add, commit, and check status. 切记必须commit到本地库
  5. (分支a) Git Push

方法二:

  1. 保证本地工作区是没有任何修改代码的,也就是说: 需要将本地工作区编辑过的文件添加到暂存区(git add .),或提交到本地仓库中(git commit),才可以使用该命令拉取指定分支的代码合并到当前分支中。
  2. (分支a) Git pull origin master
  3. (分支a) Resolve any merge conflicts, add, commit, and check status. 切记必须commit到本地库
  4. (分支a) Git Push
Git stash

https://www.atlassian.com/git/tutorials/saving-changes/git-stash

Stash pop vs stash apply

Stash list
Choose which stash to apply

$ git stash pop stash@{2}

$ git stash apply stash@{2}

$ git stash drop

相关话题:
【GIT学习总结 2】GIT Debugging汇总
【GIT学习总结 3】GIT 进阶学习)

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

推荐阅读更多精彩内容

  • 安装: windows安装git-- msysgit是windows版的git,下载单独的.exe按照默认选项安装...
    alceyp阅读 681评论 0 0
  • 为了实现与其他开发人员分享或者协同工作的目的,我们需要使用git的远程操作,将数据放到所有参与者都可以访问的服务器...
    西布鲁克阅读 180评论 0 0
  • 几乎每一种版本控制系统都以某种形式支持分支,使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工...
    西布鲁克阅读 59评论 0 0
  • 程序猿工作中接触到的 Git 命令其实不是很多,常用的就那些。有时候遇到一些小功能,就上网查一下,本文就针对用到的...
    Michael翔阅读 779评论 0 4
  • 因为过几天就要去适应新的职位了,虽然之前也用过git做版本控制管理,但都是基于自娱自乐的形式,所以都是需要用到什么...
    TanzeyTang阅读 317评论 0 0