Git常用指令

Git工作目录主要分为:

1.工作区 (git add ↓)
2.暂存区 (git commit ↓)
3.对象库


Git文件状态

1.Git文件
已被版本库管理的文件。
2.已修改
在工作目录修改git文件
3.已暂存
对已修改的文件执行Git暂存操作,将文件存入暂存区。
4.已提交
将已暂存的文件执行Git操作,将文件存入版本库中。


Git文件状态

Git常用命令

1 git init :

初始化一个版本库。

2 git init --bare

创建一个裸库,没有工作区。主要用来存放存放。

3 git add <file>

可以将一个未被追踪的文件(untracked)添加到版本库的暂存区当中(tracked)。

4 git status

查看版本库状态。

5 git rm --cached <file>

将文件从暂存区中移除。回退到已修改的状态。不会丢弃内容

6 git commit 或者 git commit -m "xxxxx"

将暂存区的文件添加到对象库中。

7 git commit --amend -m 'xxxxxx'

替换掉上次提交commit的消息。

8 git config --global

配置全局信息。

9 git config --local

针对于特定的项目。

10 git checkout -- <file>

丢弃掉相对于暂存区中最后一次添加的文件内容所做的变更。
丢弃工作目录当中的修改。(没有执行git add前的所有操作)

11 git rm <file>

从对象库删除git中的文件,同时也会删除本地文件。(必须是commit的)
1.删除了一个文件。
2.将被删除的文件纳入到暂存区。

12 git checkout -- <file>

撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区

13 git reset HEAD -- <file>

清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何改变

14 git mv <source file> <target file>

重命名或者将文件进行移动。
实际是分为两个步骤。创建一个新文件,并删除旧文件。

15 git log 或者 git log -n(显示最近n次更新)

查看提交历史。


查看历史提交

15.1 git log -p filename

查看指定文件的提交历史

15.2 git log --author="A|B"

根据作者名称查找的提交历史

15.3 git log --grep="关键字"

根据关键字查找的提交历史

15.4 git log -- a.txt

根据文件名查找的提交历史

15.5 git log 分支名

查看别的分支的提交记录
git log origin/master
git log remotes/origin/master
git log refs/remotes/origin/master
查看远程分支的提交记录。
前两种最终都会转换为第三种进行调用。

15.6 git log origin/master A

查看远程分支下 A 的提交记录(A可以是文件,也可以是目录)

16 git branch 或者 git branch -a

查看当前版本库中所有的分支

17 git branch new_branch

在当前分支的基础上创建新分支。

18 git checkout branch

切换分支。

19 git checkout -b new_branch

创建新分支并切换到新分支上。

20 git checkout -b [local_branch_name] origin/new_branch

从远程分支获取到本地。origin/new_branch远程分支与远程服务器上的分支是相对应的。

21 git branhch -d branch_name

删除分支。(如果要删除的分支与当前分支的内容没有合并,不允许删除。)

22 git branch -D branch_name

强制删除分支。

23 git merge branch_name

将branch_name 分支上的修改合并到当前的分支中。

FastForward

commit对象链
image.png

1.HEAD 指向的是当前的分支。
2.master(分支名)指向的是提交。

创建dev分支
修改dev分支
将dev分支合并master分支

24 解决冲突

修改代码后,需要调用 git add <file> 标记为已经解决冲突。
再执行git commit 标识merge完成。

分支合并

25. git merge -- no-ff branch_name

合并分支不适用FastForward,这样会多出一个commitId。

26 git reset --hard HEAD^^

或者 git reset --hard HEAD~2

或者 git reset --hard commit_id.

回退到某个版本。

27 git reflog

查看git操作记录

28 git reset HEAD <file>

将之前添加到暂存区的内容从暂存区移除到工作区。

29 git branch -m old_branch_name new_branch_name

修改分支名称

30 git stash 或者 git stash save 'xxx'

将工作目录的记录进行临时保存。

31 git stash list

查看临时保存的列表。

32 git stash pop

恢复临时保存的信息。并删除掉记录。

33 git stash apply

恢复临时保存的信息,但是并不删除记录。

34 git stash drop

删除临时保存的信息。

35 git tag tag_name

创建一个轻量级标签。

36 git tag -a tag_name -m 'xxxx'

创建一个带有附注的标签

37 git tag -d tag_name

删除标签。

38 git tag

查看所有标签。

39 git tag -l "v*"

查找标签。

40 git blame <file>

查看文件的修改记录。会显示每一行是谁修改的,还有修改时间和commit_id。

41 git diff

比较工作区和暂存区文件的区别。
暂存区视为原始文件,工作区视为目标文件。

42 git diff commit_id

比较工作区与具体对象库(版本库、git commit后的)的差别。
对象库视为原始文件,工作区视为目标文件。

43 gif diff HEAD

比较工作区与当前对象库(版本库、git commit后的)的差别。
版本库视为原始文件,工作区视为目标文件。

44 git diff --cached 或者 git diff --cached commit_id

比较暂存区和对象库(版本库、git commit后的)的差别。

45 git remote add origin xxxx.git

这里的origin为一个别名,实际代表xxxx.git。

46 git push -u origin master

将本地的仓库推送至远程的仓库,并与之进行关联。

47 git remote show origin

查看远程版本库信息。

48 git config --global alias.别名 要替代的命令

给指令起别名。

49 git push --set-upstream origin branch_name

1.将当前的本地分支推送到远程。
2.在远程也创建一个名字叫跟他同名的分支。
3.并将它们的关系绑定起来。远程分支为本地分支的上游分支。

50 gitt push--set-upstream origin develop/develop2

将本地分支develop推送至远程分支develop2。

51 git push origin :branch_name

删除远程分支。(将一个空分支推送到远程分支,冒号之前空格)

52 git push origin --delete branch_name

删除远程分支。

53 重命名远程分支

要想重命名远程分支。
1.需要先删除远程分支。git push origin --delete branch_name
2.然后将本地分支改名。git branch -m old_branch new_branch
3.再将本地分支推送至远程分支。git push --set-upstream origin branch_name

54 push 和 pull

push 操作的完整命令是:
git push origin srcBranch:destBranch
srcBranch(本地分支)
destBranch(远程分支)

pull操作完整命令是:
git pull origin srcBranch:destBranch
srcBranch(远程分支)
destBranch(本地分支)

HEAD标记符:HEAD文件是一个指向你当前所在分支的引用标识符。

55 git push origin tag_name

推送分支到远程。

56 git push origin --tag

把本地尚未推送到远程的标签都推送到远程。

57 git push origin --delete tag tag_name

删除远程标签。

58 git remote purne origin

将本地无效的分支进行删除。(如果远程分支已经被删除)

59

60 git submodule add A B

将远程分支A地址作为子仓库,然后在本地文件夹会创建B文件夹。并把A的源码clone到B文件夹中。

61 git submodule foreach git pull

遍历每个submodule进行pull操作

62 git submodule init

第一次获取工程的时候,需要在主工程执行submodule的初始化操作。注册

63 git submodule update --recursive

递归更新submodule

64 一次性获取获取主模块和子模块

git clone xxxx --recursive

65 删除submodule

git rm --cache mymodule
rm -rf mymodule
git add commit -m 'remove'
git push
rm .gitmodule
git add .
git commit -m 'delete .gitsubmodule'
git push

66 通过subtree添加子工程

git remote add subtree-module xxxx.git(subtree-module为自定义的名称。主要就是将xxx.git赋值给它,方便后面书写)
git subtree add --prefix=subtree subtree-origin master
本地创建一个叫substree的目录,并从subtree-origin对应的地址拉取master的代码。

67 git cheey-pick commit_id

将commit_id对应的提交给应用到到当前分支。

68 git rebase branch_name(建议只在本地分支使用)

git rebase 与 merge的功能类似,但在git log可以看到有所区别。
实际上可以理解上,将一个分支上的修改应用到另一个分支上。

rebase parent变化


69 rebase 冲突处理

1.解决冲突后,使用git add进行添加标记。
2.执行git rebase --continue。
3.git rebase --skip 可以跳过这个冲突,并保留现有分支的。

70 git rebase --abort

种植rebase,分支会恢复到rebase开始之前的状态。

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