前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 常用命令笔记 + 心得

Git 常用命令笔记 + 心得

作者头像
躺平程序员老修
发布2023-09-05 15:47:39
1820
发布2023-09-05 15:47:39
举报
文章被收录于专栏:躺平程序员老修

学习笔记 git

虽然每天都在用,但是从来没系统的学习过git,遇到特殊问题也总是东拼西凑查资料,于是觉得应该好好学习一下git的知识与原理,让自己的知识系统更坚固完善。

git 常用命令

git 全局设置
  • git config --global user.name "yourName" 设置你的用户名

git config --global user.email"yourEmail" 设置你的邮箱 git config --global color.ui true 设置git的颜色高亮

  • git config --global alias.st status 设置别名,既可以使用git st 可以替代git status

git config --global alias.co checkout git config --global alias.br branch

git config --global alias.ci commit git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

git 本地操作
  • git init 初始化git仓库(当前文件夹)
  • git add <fileName> 添加fileName到git索引中,可以写多个file,下次git commit会一并提交
  • git commit -m "describe" 提交当前git add的文件,-a参数表示全部提交
  • git status 查看当前仓库修改状态,那些文件被改动
  • git diff <fileName> 查看具体修改的地方
  • git rm <fileName> 删除仓库和本地的file,--cached参数表示不被跟踪,不会删除本地文件,git commit -a也不会提交,但是git status可以看到此文件,这时可以使用git add添加或者直接添加到.gitignore忽略此文件
  • git log 查看提交日志,--pretty=oneline参数可以省略提交日期与用户等信息,方便查看
  • git reset --hard <commitId> 版本回退/前进,git reset用于撤销未被提交到远端的改动,默认参数为--mixed,会撤销暂存区而保留当前工作空间的修改。

commitId是每次提交生成的hash类型的ID,通过git log 可以看到。

也可以通过git reset --hard HEAD^回退到上次修改,使用--hard参数会同时更新暂存区和本地工作空间的文件,所以使用前最好先保存<commitId>

HEAD^^^表示上上上次,HEAD~10表示上*10次,只要知道commitId,就可以穿梭到任意版本

  • git跟踪管理的是修改,而不是文件,git add之后没有提交再次的修改,需要重新git add才会提交第二次的修改,即修改->git add->修改->git add->git commit,当然,如果使用git -a 参数的话,就算没有git add 也可以提交
  • git checkout -- <fileName>检出单个文件,让file回退到最近一次git commitgit add时的状态,即撤销该文件所有修改(相对于最新一次的git commitgit add)。

如果文件错误更新后,并git add了,那么上面的checkout命令已经不能回退到git add之前了,可以使用git reset HEAD <fileName>撤销掉暂存区的修改,

然后使用git checkout -- <fileName>恢复。

如果不仅git add了,同时 git commit了,使用上文提到的

git reset --hard <commitId> 进行版本回退/前进

git checkout其实是用版本库里的版本替换工作区的版本 git checkout <branchName> 切换分支,会重写工作区,也就是检出单个文件的原理所在。那么就很好理解接下来的这一条:git checkout <commitId> -- /path/<fileName>/git checkout <branchName> -- /path/<fileName>还原某个commit版本/分支的某个文件

强制拉取覆盖本地

代码语言:javascript
复制
git fetch --all
然后,你有两个选择:

git reset --hard origin/master
或者如果你在其他分支上:

git reset --hard origin/<branch_name>
git 远程操作
  • git remote add origin git@github.com:ShyZhen/gitTest.git 添加远程库,其实就是跟远程库做一个关联,之后可以git pull origin <branchName>把文件克隆到本地。

git clone git@github.com:ShyZhen/gitTest.gitgit clone将整个项目克隆下来,包括项目名

  • git remote rm origin 删除远程库(关联)
  • git remote -v 查看原仓库信息
  • git clone git@github.com:ShyZhen/gitTest.git 克隆到本地
  • git pull origin <branchName> 拉取远程分支(origin为默认远程库名字)
  • git push origin <branchName> 推送远程分支
  • git push origin :<branchName> 删除远程分支,是真的删除文件!
  • git checkout -b <newBranchName> 创建并切换到该分支(创建git branch <newBranchName> + 切换git checkout <newBranchName>
  • git branch 查看当前分支
  • git merge <branchName> 在当前分支下,合并branchName到当前分支,之后可以使用git push推送远程分支
  • git branch -d <branchName> 删除branchName分支,-D参数为强制删除,当没有进行合并等操作时
  • git stash 暂存,手头上工作没完成的同时,需要切换分支干别的事
  • git stash list 查看暂存列表,git stash apply恢复文件,git stash drop删除暂存文件
  • git tag <tagName> <commitId | lastest> 创建标签,commitId默认是最新提交的
  • git push origin <tagName> 推送标签到远程

git tag -d <tagName>删除一个本地标签 ,git push origin :refs/tags/<tagName>删除一个远程标签(本地先删除)。 git fetch --all && git reset --hard origin/master && git pull 强拉远程

常用高级命令

  • git update-index --assume-unchanged /path/file 可以忽略这个文件的修改,从而不用提交到库里面。对应使用 git update-index --no-assume-unchanged /path/file 来恢复跟踪。
  • git reset --hard origin/main 远程分支强制覆盖本地
  • git branch -r 查看远程分支; git checkout -b xxx origin/xxx 拉取远程xxx分支到本地xxx分支,xxx为分支名
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • git 常用命令
    • git 全局设置
      • git 本地操作
        • git 远程操作
        • 常用高级命令
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档