【git】基础语法
按 a 或者 i 或者 o 进入编辑模式,我们修改好 commit 信息后按 Esc 健退出编辑模式,然后 :wq 保存我们编辑的信息。当你在使用 git commit 提交时,Commitizen 能够快速地帮你完成提交信息的补充。的特殊指针,指向当前所在的本地分支(可以将 HEAD 想象为当前分支的别名)。两个分支分别提交修改,且有冲突,合并会暂停下来,等待解决合并产生的冲突。按 a 或者 i
目录
1 git 命令汇总
git init
初始化git clone
克隆git add
提交修改到暂存区git commit
提交暂存区的修改git rebase
合并提交git push
推送git pull
拉取当前分支最新版本git merge
合并分支git checkout
切换分支git branch
分支git log
查看历史提交日志git reset
回滚代码仓库
2 初始化
mkdir test // 创建名为 test 的目录
cd test // 进入目录
git init // 初始化当前目录为仓库,初始化后会自动将当前仓库设置为master
touch test.c // 新建名为test.c的文件
git clone // 克隆远程分支
3 提交
3.1 提交修改到暂存区
git add test.c // 提交指定文件 test.c 的修改到暂存区\
git add -u [文件路径] // 添加所有修改、已删除的文件到暂存区中
git add --update [文件路径]
git add . // 添加所有修改到暂存区
git add -A [文件路径] // 添加所有修改、已删除、新增的文件到暂存区中,省略 文件路径 即为当前目录
git add --all [文件路径]
git add -i [文件路径] // 查看所有修改、已删除但没有提交的文件,进入一个子命令系统
git add --interactive [文件路径]
3.2 提交暂存区的修改到本地仓库
git commit // 提交暂存区的修改, 调用文本编辑器输入该次提交的描述信息
git commit -m "提交的描述信息" // 提交暂存区的修改, 添加描述信息
git commit --amend // 修改上次提交的描述信息
git commit -a -m "提交的描述信息" // 把所有修改、已删除的文件提交到本地仓库中
// 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u"
3.3 修改提交的描述信息
- 修改上次提交的描述信息
git commit --amend
按 a 或者 i 或者 o 进入编辑模式,我们修改好 commit 信息后按 Esc 健退出编辑模式,然后 :wq 保存我们编辑的信息
- 修改某次提交的描述信息
-
git rebase -i HEAD~3
// 回退倒数第3次的状态 -
将对应那一条中的
pick
,修改为edit
,按Esc
健退出编辑模式,然后:wq保存我们编辑的信息 -
git commit --amend
-
按 a 或者 i 或者 o 进入编辑模式,更新提交信息,按
Esc
健退出编辑模式,然后:wq保存我们编辑的信息 -
git rebase --continue
恢复所有提交记录 -
git log
检查状态是否正确 -
Esc 快捷键隐藏控制台,不能退出编辑模式,双击终端
-
冒号 保存不了,注意是 英文的
:
,不是中文的:
3.4 提交规范
-
Commitizen 是一个规范提交的插件
-
当你在使用 git commit 提交时,Commitizen 能够快速地帮你完成提交信息的补充。
-
不仅如此,Commitizen 可以帮助你的团队规范统一的 commit message。
npm install -g commitizen // 安装
git cz // 使用
- 配置
.cz-config.js
3.5 合并提交
- git checkout master^
^
把这个符号加在引用名称的后面,表示让 Git 寻找指定提交记录的父提交git branch -f master HEAD~3
- git rebase
- 第二种合并分支的方法是
git rebase
。Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。 - Rebase 的优势就是可以创造更线性的提交历史,这听上去有些难以理解。如果只允许使用 Rebase 的话,代码库的提交历史将会变得异常清晰。
git rebase 分支 1
// 把当前分支的提交合并到 分支 1
- 输入
git rebase -i HEAD~2 // 合并两个提交
- 出现提交信息,把第二个 pick 改为 s,也就是 squash(挤压合并)
// 出现
pick abc123 page: xxxxx
pick abc345 page: yyyyy
// 改为
pick abc123 page: xxxxx
s abc345 page: yyyyy
点击 esc
、输入 :
、输入 wq
退出
- 修改 commit
#
开头的为注释,不会被运行
// 出现
# This is a combination of 2 commits.
# This is the 1st commit message:
page: xxxxx
# This is the commit message #2:
page: yyyyy
// 改为
# This is a combination of 2 commits.
# This is the 1st commit message:
page: xxxxx、yyyyy
点击 esc
、输入 :
、输入 wq
退出
- 提交
git push -f
4 分支
git branch // 查看本地分支
git branch -r // 查看远程分支
git branch -a // 查看所有分支
git branch 分支名称 // 新建分支
git branch -d 分支名称 // 删除本地分支
git branch -m 分支名 新的分支名 // 修改分支名称
git push origin --delete 分支名称 // 删除远程分支
git remote prune origin // 清理本地无效远程追踪分支,(远端分支已经删除,本地依旧能看到)
git checkout 分支名称1 // 来到 分支名称1 分支
git checkout -b 分支名称 // 从当前分支拉取出新的开发分支并命名
5 合并
5.1 合并分支
Git:合并分支----git merge 命令应用的三种情景
git merge 分支名称2 // 把 分支名称2 分支合并到当前分支里
5.1.1 快进
- 当前分支所指向的提交是当前提交的直接上游,所以 Git 只是简单的将当前分支指针向前移动。
- 换句话说,当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进,因为这种情况下的合并操作没有需要解决的分歧——这就叫做 “快进(fast-forward)”。
5.1.2 非快进,无冲突
两个分支分别提交修改,且无冲突,合并时自动 commit
一次
5.1.3 非快进,有冲突
两个分支分别提交修改,且有冲突,合并会暂停下来,等待解决合并产生的冲突
<<<<<<< HEAD
test master. // ======= 的上半部分, HEAD 所指示的版本
=======
test dev. // ======= 的下半部分, 待合并分支 (dev) 所指示的版本
>>>>>>> dev
解决冲突后手动提交
git add .
git commit -m "connection"
5.2 复制某一两个提交到其他分支
把 提交 a 从 develop 复制到 master
git checkout develop
git pull
git log // 获取到 提交 a 的 hash
git checkout master
git cherry-pick <hash> //
// 冲突
git cherry-pick --abort // 放弃本次复制
git add .
git cherry-pick --continue // 修改冲突并继续
6 拉取
git pull // 从远程仓库获取最新版本并合并到本地
// 首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。
7 推送
git push -u origin 分支名称 // 将当前分支推送到origin主机的对应分支, 同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
git push // 推送本地提交到远程
8 日志
git log // 查看历史提交日志
- commit xxxx (HEAD -> 分支名称)
- Author 提交者:用户名 <邮箱>
- Date 提交时间,+0800 是格林尼治时间,代表当前是以哪儿的时间地作为基准,这是世界时间,用它来作为基数与当前所在地时差进行计算,包括地球自转等公式。
- 注释
wq
退出
ctrl
+c
退出
9 回滚代码仓库
git reset --soft // 头指针恢复, 已经 add 的暂存区不变, 工作空间的不变
git reset --mixed // 头指针恢复,已经 add 的暂存区丢失,工作空间的不变
git reset --hard // 头指针恢复,已经 add 的暂存区丢失,工作空间的恢复
git reset --soft HEAD^ //回退上个版本,将上次 commit 回到暂存区
两种方法用来撤销变更 —— 一是 git reset
,还有就是 git revert
10 HEAD
Git 中有一个名为 HEAD
的特殊指针,指向当前所在的本地分支(可以将 HEAD 想象为当前分支的别名)。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)