日常工作中对我很重要的那些git命令

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

image.png


前言:平常在windows电脑上使用Git Extensions 工具比较多,大部分的常用指令都可以通过点点点就可以完成。在mac电脑上的话使用sourcetree工具。但有时候也会直接通过git命令,很多时候也是通过百度来临时查阅,所以总结下来方便自己,也方便可能需要的你。


1、git基本框架


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


  • Workspace:开发者工作区,当前写代码的目录
  • Stage:暂存区/缓存区
  • Repository:本地仓库,本地所有的提交都会保存在这里,git会保存好每一个历史版本
  • Remote:远程仓库,服务器仓库(github、gitee等等等等)


git安装在这里就不提了,如果不清楚可以去查查了


2、SSH秘钥


很多同事在入职第一天的时候,都会遇到使用git来拉取代码的情况。但是我发现前端开发很多时候自己都搞不定第一步。给自己开了一个非常不好的开头。


我平常主要是用以下几个命令,生成SSH公钥和私钥,公钥要复制配置到git服务器上,可通过终端或者Git Bash Here打开命令


// 查看ssh版本,同时判断ssh是否已经安装,安装git即可
ssh -V
// 生成SSH密钥
ssh-keygen -o
// 导航到指定目录
cd ~/.ssh/
// 查看ssh,id_rsa.pub则为公钥,id_rsa则为私钥,将公钥复制到git服务器(其实是文件里面的字符串)
ls
// mac下可以用cat命令进行查看 .pub后缀名为公钥,另外一个为私钥,将公钥复制到服务器或者github或者code.aliyun.com上
cat ~/.ssh/id_rsa.pub


3、 git config 配置提交用户名和用户邮箱


git config --global user.name "aehyok"
git config --global user.email "aehyok@163.com"
// 配置好后可通过这个来查看
git config -l


4、将文件添加到暂存区


// 将添加或修改的文件提交到暂存区
git add .
// 将监控已经被add进暂存区的文件,会将被修改的文件再次提交到暂存区
// 或者是
git add -u
// 则是git add .和 git add -u 两个命令的集合
// 或者是
git add -A


4、 提交到本地仓库(即自己当前电脑的代码仓库)


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


5、 设置远程仓库地址(即代码要提交到哪里的服务器)


// 当然也可以使用ssh 链接
git remote add github.origin https://github.com/aehyok/demo.git
// 移除远程仓库,默认名称为origin
 git remote rm origin
// 重新设置远程仓库url
 git remote set-url origin git@github.com:aehyok/vue-qiankun.git


6、 推送到远程服务器(注意一点,首次推送要设置追踪)


// 设置本地分支追踪远程分支、、、之后就可以直接git push
git push --set-upstream origin main


关于推送我前两天总结了几点,有兴趣的可以点击查看juejin.cn/post/712704…


7、 在vscode中修改文件名会忽略大小写


因为在默认的情况下是忽略了,所以修改文件名大小写是无效的。


这里可以通过命令来查看当前是否开启了忽略大小写的设置,true则表明设置了忽略或者默认开启了。


git config core.ignorecase
// 后面加上false则直接可设置不忽略,修改文件名大小写后会生效
git config core.ignorecase false


8、修改文件夹名字大小写的问题


// (修改前先将Test文件夹备份并修改为TestTemp<一个临时文件夹名字而已>,
// 然后执行命令
git rm Test
// 再将备份文件夹名字修改为需要的文件夹即可
--------------另外一种简单粗暴的方式-----------------
// 还是先备份好要删除的文件,然后将文件删除,提交到仓库。
// 完事后将备份的文件复制回来,然后修改文件大小写,再提交即可。


9、 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  // 单独分支


10、同样一个本地仓库可以设置多个远程仓库(github、gitee方便做同步代码)


注意:在一个代码仓库中你可以添加一个github的远程仓库,同时可以添加一个gitee的远程仓库,在提交代码的时候,可以同步提交(最终提交的时候git push 两次而已),这样假如某一天github使用不了了,那么gitee的同步作用就体现出来了。


// 设置个github远程仓库
git remote add github.origin git@github.com:aehyok/blog.git
git remote add gitee.origin git@gitee.com:aehyok/blog.git
// 推送到github
git push github.origin
//  推送到gitee
git push gitee.origin
// 移除远程仓库地址
git remote rm gitee.origin


11、克隆代码库


// 目前没指定分支,默认为master
git clone https://github.com/aehyok/demo.git
// 指定分支名称
git clone -b dev  https://github.com/aehyok/demo.git
// 克隆指定远程仓库下的指定分支(gitee.origin为git remote add 设置的别名)
git clone gitee.origin  main


12、git add . 时 vscode中警告 warning: LF will be replaced by CRLF in src/index.js.


git config --global core.autocrlf false


13、如果新装电脑后使用git 操作代码可能会报错


// 升级了OpenSSH 后报错
// Unable to negotiate with 47.98.49.44 port 22: no matching host key type found. Their offer: ssh-rsa
// fatal: Could not read from remote repository.
// Please make sure you have the correct access rights
// and the repository exists.
// 因为OpenSsh升级了,需要在xx/xx/xx/.ssh目录下添加config文件(没有后缀名) ,添加以下三行代码
    Host *
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedKeyTypes +ssh-rsa      


15、git log 详细操作


查看提交日志的各种命令


git log
// 单行输出
git log --oneline
// 知道每个提交关联的分支或者标签 
git log --oneline --decorate
// 有时候不太清楚某段代码的含义,可以查看一下当时提交的备注信息(当然备注信息要规范才有意义)
git log -S "XXXXXXXX"
// 更多的可以查看地址
https://www.cnblogs.com/lsgxeva/p/9485874.html


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


//1、找到想要退回到的那个commitid
git log 
2、然后将代码退回到那个commitid
git reset --hard commitid
3、推送到服务器,已经要加上--force
git push origin HEAD:dev --force


17、删除没有push到远程服务器的commit记录


// 1、通过找到想要退回到的commit_id
git log 
// 2、本地代码会变成你想要的那次代码。这次之后提交的代码都没有了
git reset --hard id 
// 3、完成撤销,停留在当前版本,之前的代码还是在的。只是本地的提交记录没了
git reset id 


18、vscode中配置git bash 作为命令行


- https://zhuanlan.zhihu.com/p/365625019


19、在某个分支暂存某些临时代码


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


// 将当前代码状态暂时切换WIP
git stash save '备注'
// 执行后 Saved working directory and index state WIP on dev: b4d9dc5 feat: 合并行和列
// 想恢复的话需要切换到之前的分支,然后再执行
// 应用最近一次的stash
git stash apply   
// 应用指定stash, 先list
git stash apply  stash@{0}  //apply后,list中还会存在
// 或者 pop
git stash pop stash@{0}  // pop后,list中不会存在
//如果stash了多次,可通过list命令列出所有的stash
git stash list 
// 如果都恢复完毕 可以使用clear进行清除
git stash clear       


20、恢复commit提交


// 最近一次的
git reset --soft HEAD^
git log //通过查看日志可以发现,已经commit,但没有push的代码已经返回到本地更改中, 而且git log中不会留下记录
// 指定commitid的提交(最近一次的提交到指定的commitid) 所有更改
git reset --soft commitid
//如果没有push到远程服务器,直接push即可
git push
// 如果已经push到远程服务器,因为服务器与本地存在差异
git push -f
// 直接重置到commitid  一般慎用
git reset --hard commitid


21、git subtree



22、 免密登陆linux


平常很多人可能会打包或者通过脚本,或者通过自动化工具,前端项目进行打包,有时候就不可避免的要远程linux服务器,可以将密钥拷贝到linux服务器,这样就可以做到免密登录,很方便


//本地生成就不说了在上面 
cat ~/.ssh/id_rsa.pub | ssh root@139.159.245.209 “cat - >> ~/.ssh/authorized_keys”


23、我的mac在某一天不知道是因为我装了啥,还是升级了什么导致如下错误,也能用,但是每次都会提示


Are you sure you want to continue connecting (yes/no/[fingerprint])?


vim ~/.ssh/config
// 添加如下
StrictHostKeyChecking no


24、总结






  • 很多东西全靠记忆可能是行不通的,俗语云好记性不如烂笔头
目录
相关文章
|
28天前
|
开发工具 git
git 常用命令
这些只是 Git 命令的一部分,Git 还有许多其他命令和选项,可根据具体需求进行深入学习和使用。熟练掌握这些命令能够帮助你更高效地管理代码版本和协作开发。
|
4月前
|
存储 开发工具 git
|
20天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
29 3
|
4月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
76 0
|
1月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
53 1
[Git]入门及其常用命令
|
2月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
142 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
1月前
|
开发工具 git 开发者
|
1月前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
64 0
|
3月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
3月前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7