一文理清git的常用操作及命令

119 阅读7分钟

一文理清git的常用操作及命令

认识git

git是每个开发者都应该掌握的简单易用、高效的版本管理工具。巴拉巴拉~~

git安装及配置

安装就比较简单了,去官网下载对应系统的安装包即可,网上教程一大堆就不再多做赘述,安装好之后使用git --version查看是否安装成功,如果有版本信息就说明安装成功,就可以开始使用了。

安装之后还需要配置一下账户名和邮箱,这两条配置很重要,你每次的提交都会引用到,表明是谁进行了本次提交。

git config --global user.name "yourname"
git config --global user.mail "yourmail"

基础命令

首先列举一下常用命令:

初始化新仓库 git init
克隆代码 git clone https://gitee.com/test/test.git
克隆指定分支 git clone -b dev git@gitee.com:test/test.git
查看状态 git status
提交单个文件 git add index.js
提交所有文件 git add -A
使用通配符提交 git add *.js
提交到仓库中 git commit -m '提示信息'
提交已经跟踪过的文件,不需要执行add git commit -a -m '提交信息'
删除版本库与项目目录中的文件 git rm index.js
只删除版本库中文件但保存项目目录中文件 git rm --cached index.js
修改最后一次提交 git commit --amend

哇哦amazing!!!!!

基础流程

首先去克隆你的项目:

git clone https://gitee.com/test/test.git

然后在本地就可以去做开发了。开发好了后要入库,就需要进行下面的流程:

将修改文件提交到暂存区(按需使用命令即可):

提交单个文件: git add index.js
提交所有文件: git add -A 或者 git add .
使用通配符提交: git add *.js

然后将修改commit到本地git仓库:

提交到仓库中 git commit -m '提示信息'
提交已经跟踪过的文件,不需要执行add   git commit -a -m '提交信息'

最后将本次修改推送到远端仓库(码云、github):

git push
git push origin HEAD:refs/for/branchname

git工作区

git clean命令用来从工作目录中删除所有 没有跟踪(tracked) 过的文件

git clean -n 是一次clean的演习, 告诉你哪些文件会被删除 git clean -f 删除当前目录下没有tracked过的文件,不会删除.gitignore指定的文件 git clean -df 删除当前目录下没有被tracked过的文件和文件夹 git checkout . 将没有放入到暂存区的所有文件恢复 git checkout hd.js 放弃指定文件的修改 git checkout -- hd.js 将文件从暂存区恢复(如果没有提交到暂存区,将恢复到最近版本

git暂存区

git add . 提交所有修改和新增的文件 git add -u 只提交修改文件不提交新文件 git ls-files -s 查看暂存区文件列表 git cat-file -p 6e9a94 查看暂存区文件内容

git日志查看

查看日志 git log

查看最近2次提交日志并显示文件差异 git log -p -2

显示已修改的文件清单 git log --name-only

显示新增、修改、删除的文件清单 git log --name-status

一行显示并只显示SHA-1的前几个字符 git log --oneline

分支管理

我们一般开发不会直接在master分支开发,而是在开发分支上。所以需要分支管理:

分支管理流程:

  1. 新建开发分支dev git branch dev
  2. 切换到开发分支进行新业务开发 git checkout dev
  3. 完成开发后提交 git commit -m "dev开发"
  4. 合并到master分支
    切换到master分支 git checkout master
    合并开发分支代码  git merge dev
    
  5. 推送到远程master git push

分支管理常用命令:

创建分支 git branch dev 查看分支 git branch 切换分支 git checkout dev 创建并切换分支 git checkout -b feature/bbs 将分支 main 更新为master git branch -m main master 合并dev分支到master 1. git checkout master 2. git merge dev 删除分支 git branch -d dev 删除没有合并的分支git branch -D dev 删除远程分支 git push origin :dev 查看未合并的分支(切换到master) git branch --no-merged 查看已经合并的分支(切换到master) git branch --merged

reset命令

reset命令用来重置暂存区和本地工作区的内容,它有三个可选参数:

  1. --hard 重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容
  2. --soft 重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致
  3. --mixed(默认) 重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致

哈哈还是得看例子:

  1. git reset --hard b7b73147ca8d6fc20e451d7b36 恢复到指定提交版本(先通过 git log 查看版本号),重置stage区和工作目录里的内容。
  2. git reset --hard HEAD^^^ 恢复前三个版本
  3. git reset --soft 保留工作区的内容,只回退commit的动作。保留 working tree工作目录的內容,index 暂存区与 working tree 工作目录的內容一致,只是仓库repository 中的內容的改变。
  4. git reset HEAD -- .撤销暂存区的文件
  5. git reset --hard 清空工作区和暂存区的改动
  6. git reset HEAD hd.js 放弃已经add 暂存区的文件hd.js

stash命令

"暂存" 可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

  1. 储藏工作 git stash
  2. 查看储藏列表 git stash list
  3. 应用最近的储藏 git stash apply
  4. 应用更早的储藏 git stash apply stash@{2}
  5. 删除储藏 git stash drop stash@{0}
  6. 应用并删除储藏 git stash pop

cherry-pick命令

命令格式

git cherry-pick命令的作用,就是将指定的提交(commit)应用于其他分支。

git cherry-pick <commitHash>

举个例子:代码库有两个分支master、dev

master: 1 - 2 - 3 - 4 - 5
                \
                6 - 7 - 8 dev分支

现要将dev分支的第7次提交合并到master分支

# 切换到 master 分支
git checkout master 
# Cherry pick 操作
git cherry-pick 7

然后就变成了:

master: 1 - 2 - 3 - 4 - 5 - 7
                \
                6 - 7 - 8 dev分支

master分支的末尾增加了一个提交7。

git cherry-pick命令的常用配置项如下。

  • -e,--edit 打开外部编辑器,编辑提交信息。

  • -n,--no-commit只更新工作区和暂存区,不产生新的提交。

  • -x 在提交信息的末尾追加一行(cherry picked from commit ...),方便以后查到这个提交是如何产生的。

  • -s,--signoff 在提交信息的末尾追加一行操作者的签名,表示是谁进行了这个操作。

  • -m parent-number,--mainline parent-number 如果原始提交是一个合并节点,来自于两个分支的合并,那么 Cherry pick 默认将失败,因为它不知道应该采用哪个分支的代码变动。

  • -m 配置项告诉 Git,应该采用哪个分支的变动。它的参数parent-number是一个从1开始的整数,代表原始提交的父分支编号。

其他

如果操作过程中发生代码冲突,Cherry pick 会停下来,让用户决定如何继续操作。

  • --continue 用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。$ git cherry-pick --continue

  • --abort git cherry-pick --abort发生代码冲突后,放弃合并,回到操作前的样子。

  • --quit发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。