初接触git,整理一下对git的理解和认为会常用的一些知识点
你创建的那个文件夹就是你的本地仓库
仓库中的 .git 中的某个文件夹为暂存区
文件夹为你的工作区
创建本地仓库一定要在一个空的文件夹下创建,这个空的文件夹就是你的本地仓库,可以用以下两种方式初始化仓库
(1)可以使用 Git GUI 中的 Create New Repository 创建
(2)在 Git Bash 中输入命令 【git init】
创建好后会在当前文件夹下多一个.git文件,本地仓库初始化完成
(1)配置换行符:
git config --global core.autocrlf false
git config --global core.safecrlf warn
(2)配置用户名邮箱:
git config --global user.name “name”
git config --global user.email “name@email.com”
(3)查看账号
git config user.name
git config user.email
当创建新文件或者对当前文件进行修改后,可使用命令 【git status】 查看当前仓库的状态信息,即仓库中的哪些文件进行了哪些修改
使用【git diff filename】查看修改的内容
使用 【git add filename】将文件添加至暂存区,注意文件名应当带后缀
当想将所有文件都提交至暂存区时可使用 【git add .】命令
commit之前想要取消提交,恢复到上一次的内容【git checkout 文件路径\文件名】
使用【git commit -m “提交描述”】命令将文件提交至仓库
可以通过【git log】查看git日志,可以看到什么人在什么时间做了commit操作
【git reflog】命令可查看所有操作记录
在commit之前可以使用【git reset filename】命令取消某文件的暂存
可以使用【git reset commitID】命令将版本跳转为commitID对应的版本
【git reset --hard commitID】返回到某个节点,不保留修改。
【git reset --soft commitID】功能是返回到某个节点。保留修改。
【git reset --soft HEAD^】 取消当前的commit
【git checkout -b name template】命令创建一个新的分支name为新分支的姓名,template指以哪个分支为模板,若不填则表示以当前分支为模板
【git branch】命令可以查看所有分支,高亮的目录表示当前分支
【git merge】命令合并两个分支的变更
【git clone url】将远程仓库的文件克隆至本地仓库
【git push】将本地分支的文件推送至远程仓库
【git pull】将远程仓库的文件下载至本地分支
在pull之前或者切换分支时,本地有一些修改的,使用 【git stash】 进行备份
使用【git stash pop】将备份恢复,会自动进行合并操作
【git cherry-pick commitID】
【git cherry-pick commitIDA commitIDB】
转移从 A 到 B 的所有提交(A 将不会包含在 Cherry pick 中)。它们必须按照正确的顺序放置:提交 A 必须早于提交 B,否则命令将失败,但不会报错。
【git cherry-pick A…B 】
如果要包含提交 A,可以使用下面的语法。
【git cherry-pick A^…B】
git cherry-pick命令的常用配置项如下。
(1)-e,–edit
打开外部编辑器,编辑提交信息。
(2)-n,–no-commit
只更新工作区和暂存区,不产生新的提交。
(3)-x
在提交信息的末尾追加一行(cherry picked from commit …),方便以后查到这个提交是如何产生的。
(4)-s,–signoff
在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。
(5)-m parent-number,–mainline parent-number
如果原始提交是一个合并节点,来自于两个分支的合并,那么 Cherry pick 默认将失败,因为它不知道应该采用哪个分支的代码变动。
-m配置项告诉 Git,应该采用哪个分支的变动。它的参数parent-number是一个从1开始的整数,代表原始提交的父分支编号。
$ git cherry-pick -m 1
上面命令表示,Cherry pick 采用提交commitHash来自编号1的父分支的变动。
一般来说,1号父分支是接受变动的分支(merged别的分支),2号父分支是作为变动来源的分支(被 merged)。
如果操作过程中发生代码冲突,Cherry pick 会停下来,让用户决定如何继续操作。
(1)–continue
用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用–continue,让 Cherry pick 过程继续执行。
$ git cherry-pick --continue
(2)–abort
发生代码冲突后,放弃合并,回到操作前的样子。
(3)–quit
Cherry pick 也支持转移另一个代码库的提交,方法是先将该库加为远程仓库。
$ git remote add target git://gitUrl
上面命令添加了一个远程仓库target。
然后,将远程代码抓取到本地。
$ git fetch target
上面命令将远程代码仓库抓取到本地。
接着,检查一下要从远程仓库转移的提交,获取它的哈希值。
$ git log target/master
最后,使用git cherry-pick命令转移提交。
$ git cherry-pick