个人git知识总结

个人常用的git命令以及相关知识总结,具体git命令的介绍可以查看官网

1.常用命令一览

// 每个命令下的缩进为该命令下的一些参数或操作
1.init
2.status
3.diff
  head
4.add
  .
  dir-path
  file-path
5.commit
  -m
  --amend
6.rebase
  -i head~n
7.log
  -p
  --graph
8.reflog
9.checkout
  -b branch-name
  -- dir-path/file-path
10.branch
  -a
  -d branch-name
  -D branch-name
11.merge branch-name
12.pull
  origin branch-name
13.push
  --set-upstream origin branch-name
14.reset
  --hard commit-hash
  head dir-path/file-path
15.stash
  pop

2.常用命令使用场景

1.init

新建项目时,初始化一个文件夹作为git仓库。

2.status

查看被修改的文件有哪些。

使用场景:在每次提交代码前使用,用于确认修改过的文件有哪些,避免提交用于测试而不需要提交的文件的前置操作。

具体使用场景:对接后端开发环境修改了axios.js的配置,为避免影响线上环境,不应提交该文件,并在提交其他功能相关的文件以后,应回退对axios.js的修改。

3.diff

查看文件中具体的修改。diff命令将会显示工作区中文件的具体修改差异,经过add操作的文件,需要使用diff head查看具体差异。

使用场景:在提交代码前,确认每处修改是否正确,以及代码中是否有多余的修改。

具体使用场景:我在进行addcommit操作前,会使用diff/diff head对文件进行检查,看是否有console.log没有删除。
(我们的项目中开发环境允许使用console.log进行调试,但在commit前会对修改过的文件中是否留有console.log进行检查。)还会用来检验是否有错别字,或者在某个不经意间敲了键盘,增加了多余的代码。

4.add

用于将工作区中的文件添加至暂存区,为commit操作做准备。可以使用add .添加所有工作区中的文件,也可以使用add '文件路径'/add '文件夹路径',添加单个文件或单个文件夹路径下的所有文件。

使用场景:commit前,将工作区中的文件添加至暂存区

具体使用场景:add s/p => tab 补全 => add src/public,将public文件夹下的文件添加至暂存区。这里主要是想介绍通过文件路径/文件夹路径添加特定的文件。

5.commit

提交暂存区中的文件,形成一次提交记录。平时主要使用commit -m '对本次提交的说明',说明中注明本次提交所涉及的相关功能,以便于在日后的维护中,可以便捷的了解本次提交做了什么操作。

使用场景:功能或任务完成后,提交相应文件。

5.1 --amend

修改上一次commit中的错误。如果因为手误导致提交了错误的commit信息,可以使用commit --amend修改上一次的提交信息。

5.2 commit时机

如果想更好的对版本进行管理,需要控制好commit的时机,如果每修改一行代码就进行一次提交,将能对整个git仓库中的文件进行行级别的版本控制。不过这种操作方式很不便利,个人使用的是实现某个功能后,便对代码进行一次提交,当对下一个功能进行开发时,遇到阻碍时,则可以使用git checkout -- src回退所有的修改,从头再来,这样可以保持每段时间内只修改部分功能,而不会出现一次开发过程中存在大量文件被修改,提交时忘记去除临时代码,以及避免一段时间开发后直接commit -a。如何避免开发一个功能存在n多提交信息的问题,请看下一节rebase命令。

6.rebase -i head~n

对n个最新的提交进行操作。使用该命令后,会pick最新的n条提交记录,通过将pick修改为[edit|squash|fixup],对提交记录进行[修改|合并|合并并丢弃该提交]

使用场景:

  • 1.修改某个项目组成员的某个提交。
  • 2.功能开发完毕以后,将多个提交合并成一个。

7.log

显示当前分支的提交历史。
-p参数:显示提交历史以及文件中具体的修改。
--graph参数:显示提交历史以及分支操作的图标形式。

8.reflog

显示当前仓库所有的操作历史,除了提交记录,还有分支操作记录。

9.checkout

切换分支/回滚文件。
checkout branch-name:切换分支。
checkout -b branch-name:将会创建并切换至该分支。
checkout -- '文件路径'/'文件夹路径':回滚单个文件,或文件夹下的所有文件。
在远程仓库新建了branchA,在本地拉取代码以后,可以通过checkout branchA直接基于远程分支创建并切换至branchA

10.branch

branch:显示当前分支及本地所有分支。
branch -a:显示当前分支以及本地及远程仓库的所有分支。
branch branch-name:创建branch-name分支。
branch -d branch-name:删除branch-name分支。如果分支被合并了以后,可以进行删除操作,否则会报错。
branch -D branch-name:强制删除branch-name分支。

11.merge

merge branch-name:将branch-name分支合并至当前分支。

12.pull

pull:在设置了上游分支的情况下,拉取当前分支在远程仓库中的最近版本到本地分支。
pull origin branch-name:拉取远程仓库中的branch-name的最新版本到当前本地分支。

推荐在每天上午开始工作前、中午、晚上进行pull操作,防止没有拉取新代码导致合并时出现冲突。项目使用敏捷看板进行项目管理,每次开发新任务前会进行pull操作,以保证开发新功能时,本地代码是最新版本。

13.push

push:在设置了上游分支的情况下,将当前分支推送至远程仓库中设置的上游分支。如果远程仓库中,上游分支被删除了,该操作会重新创建对应的新分支。
push --set-upstream origin branch-name:将branch-name分支推送至远程仓库中,并将远程仓库中的branch-name设置为该分支的上游分支。

14.reset

reset --hard commit-hash:回退代码至指定commit-hash的版本。需要进行回退操作时,通过log命令查询需要回退的代码版本,记录commithash值,一般取前七位就可以,与reflog保持一致。如果要回到最新版本,使用reflog找到最新版本的hash,然后reset --hard latest-hash即可。
reset head file-path/dir-path:将暂存区中的文件移至工作区。add了错误的文件至暂存区时,可以通过该命令移出。

15.stash

stash:“临时储藏”当前修改。有时候做了文件修改以后,需要进行切换分支或者pull操作时,会提示有未提交的修改,可以通过该命令储藏当前修改,在进行了如pull等其他操作以后,再通过git stash pop恢复储藏的代码。

3.总结

这篇文章记录了个人开发过程中常用的一些git命令,以及对其的一些理解,本文没有记录命令的具体效果,只记录了一些自己经常使用的情况。其中对于 commit时机、 通过文件夹路径add文件、 通过status以及diff确认修改的文件及内容,是作为一个好的开发人员,在协同工作中需要注意的地方。

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