git : 常用命令合集

1、基本框架

git 基本组成框架:Workspace、Stage、Repository、Remote

  • Workspace :开发者工作区,当前写代码的目录

  • Stage :暂存区 / 缓存区

  • Repository :本地仓库,本地所有的提交都会保存在这里,git 会保存好每一个历史版本

  • Remote :远程仓库,服务器仓库(github,gitee...)

2、公钥秘钥

生成 SSH 公钥和私钥,公钥要复制配置到 git 服务器上,可通过终端或者 Git Bash Here 打开命令

// 查看 ssh 版本,同时判断 ssh 是否已经安装
ssh -V

// 生成 ssh 密钥
ssh-keygen -o

// 指定目录
cd ~/.ssh/
// 查看 ssh,id_rsa.pub 则为公钥,id_rsa 则为私钥,将公钥复制到 git 服务器
ls

// mac 用 cat 命令进行查看,.pub 后缀名为公钥
cat ~/.ssh/id_rsa.pub

3、git config

配置提交用户名和用户邮箱

git config --global user.name "A"
git config --global user.email "[email protected]"

// 查看
git config -l

4、将文件添加到暂存区

// 将添加或修改的文件提交到暂存区
git add .

// 将监控已经被 add 进暂存区的文件,会将被修改的文件再次提交到暂存区
git add -u

// . 和 -u 的集合
git add -A

5、提交到本地

// 提交到本地仓库
git commit -m 'feat:初始化项目'

6、设置远程仓库地址

// 使用 SSH 链接
git remote add github.origin https://github.com/k/d.git

// 移除远程仓库,默认名称为 origin
git remote rm origin

// 重新设置远程仓库 url
git remote set-url origin [email protected]:k/b.git

7、推送到远程服务器

(首次推送要设置追踪)

// 设置本地分支追踪远程分支
git push --set-upstream origin main
  • ``git push -u origin main`

    -u参数:当远程仓库没有对应的 main 分支则自动创建一个分支,并进行本地分支与远程分支的关联。后续便可使用 git push 替代 git push origin main

  • git push默认推送到当前分支到远程仓库,若首次提交推送,可能会提示警告;

  • git push --set-upstream origin main

    设置本地分支对应的远程仓库分支,并进行推送关联。如果远程仓库中存在此分支,则还可以通过git branch --set-upstream-to=origin/main进行设置关联,关联后可直接使用git push进行推送。

关于推送:[推送连接](git push时如果遇到问题,来试试这几种方式 - 掘金git push时如果遇到问题,来试试这几种方式 - 掘金)

8、修改文件名忽略大小写

查看当前是否开启了忽略大小写的设置,true 则表明设置了忽略或默认开启了

git config core.ignorecase

// false: 设置不忽略
git config core.ignorecase false 

9、修改文件夹名字大小写

  1. 修改前先将 Test 文件夹备份并修改为 TestTemp <临时文件夹>,再执行命令:

    git rm Test
    // 再将备份文件夹名字修改为需要的文件夹
  2. 备份删除的文件,删除文件后再进行仓库提交,之后将文件复制回并修改文件大小写,再重新提交。

10、git fetch 和 git pull

区别:

  • git fetch 是将远程仓库的最新代码拉取到本地仓库(此时还没有合并到工作空间中),用户在检查了以后决定是否合并到工作空间的分子中。

  • git pull 是将远程仓库的最新代码拉取后直接合并到本地空间,即 git pull = git fetch + git merge ,这样可能会产生冲突,需要手动解决。

// 只拉取 origin 远程的 dev 分支
git fetch origin dev

// 拉取整个仓库的变更到本地仓库
git fetch

// 更多基本操作
//https://www.cnblogs.com/runnerjack/p/9342362.html

// 拉取并合并(跟 fetch 类似)
git pull // 全部

// 单独分支
git pull origin dev

11、设置多个仓库

同样一个本地仓库可以设置多个远程仓库,同步提交

// 设置 github 远程仓库
git remote add github.origin [email protected]:k/b.git
// 设置 Gitee 远程仓库
git remote add gitee.origin [email protected]:k/b.git

// 推送 github
git push github.origin
// 推送 gitee
git push gitee.origin

// 移除本地记录的远程仓库地址
git remote rm gitee.origin

12、克隆远程仓库

// 目前没指定分支,默认为 master
git clone https://github.com/aehyok/demo.git

// 指定分支名称
git clone -b master https://github.com/aehyok/demo.git

// 克隆指定远程仓库下的指定分支
git clone gitee.origin main

// 克隆指定远程仓库下指定分支指定文件或文件夹
# 开启稀疏检出
$ git config core.sparseCheckout true
# sparse-checkout文件里写入要拉取的文件或者文件夹 
$ echo 'Pravite' >> .git/info/sparse-checkout
# 同步
$ git pull origin master

13、查看提交

查看提交日志的各种命令

git log

// 单行输出
git log --oneline

// 知道每个提交关联的分支或者标签
git log --oneline --decorate

// 查看当时提交的备注信息(备注要规范)
git log -S "...."

// 更多查看地址
// https://www.cnblogs.com/lsgxeva/p/9485874.html

14、获取提交 ID

// 完整 commmit_id
git rev-parse HAED

// short commit id
git rev-parse --short HEAD

15、删除已 push 的记录

删除已经 push 到服务器的提交记录,到某个 commit_id

// 1、找到想退回的 commitid
git log
// 2、将代码进行退回
git reset --soft commit_id
// 3、推送到服务器
git push origin master --force

16、删除未 push 的记录

// 1、找到想退回的 commit_id
git log
// 2、代码退回,之后提交的代码将会消失
git reset --hard commit_id
// 3、完成撤销,停留在当前版本,之前的代码仍然存在,但本地提交记录不存在
git reset commit_id

17、分支上暂存临时代码

有时候我们写着某个需求,或者某个比较严重的 bug 或者重构代码,突然告诉你,有一个问题要处理一下,你又不想再单独的建分支了,此时可以使用 stash

// 将当前代码状态展示切换 WIP
git stash save '备注'

// 恢复:需要切换到之前的分支,然后再执行
// 应用最近一次 stash
git stsh apply
// 引用指定 stash,先 list
git stash apply stash@{0}
// 或者 pop`
// 若 stash 多次,可通过 list 命令列出所有的 stash
git stash list

// 如果都恢复完毕,可以使用 clear 进行清除
git stash clear

18、恢复提交

// 最近的一次
git reset --soft HEAD^
// 查看日志,已经 commit 但没有 push 的代码已经返回到本地更改中
git log

// 指定 commitid 的提交(最近一次的提交到指定的 commitid)所有更改
git reset --soft commitid

// 如果没有 push 到远程服务器,直接 push,如果已经 push,则会与本地存在差异
git push -f

// 直接重置到 commitid ,慎用
git reset --hard commitid

19、免密登录

将密钥拷贝到linux服务器,这样就可以做到免密登录

// 免密拷贝密钥
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authroized_keys"

你可能感兴趣的:(Git,git)