bingmous

欢迎交流,不吝赐教~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

Git安装和使用

安装:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

常用命令

# 从github clone仓库
git clone git@github.com:xxx/xxx.git
# 添加文件或目录
git add xxx
# 提交
git commit -m
# 推送到github
git push
# 拉取最新版本
git pull
# 从本地新建仓库
git init

本地使用:

notepad编辑器:https://notepad-plus-plus.org/

Git bash常用命令:

  • mkdir:新建文件夹
  • cd + 路径:前往文件夹
  • pwd:显示当前目录
  • ls:显示当前目录文件
  • cat + 文件:查看文件内容
  • rm + 文件:删除文件

第一步:把一个目录变成git仓库

$ git init

第二步:往仓库里添加文件

$ git add ex31.py

第三步:把文件提交到仓库

$ git commit -m “add ex31.py”

说明:commit一次可以提交多个文件;-m后面是本次提交的说明

其他:

  • 查看仓库状态:
$ git status
  • 查看修改文件的部分:
$ git diff [filename]
$ git diff HEAD -- [filename] //查看工作区与版本库的区别
  • 查看版本提交历史
$ git log [--pretty=oneline]
  • 版本回退
$ git reset --hard HEAD^ //^^表示回退两个版本,HEAD~100表示回退100个版本
$ git reset --hard 1094a //回退到制定版本,+版本号前几位
  • 查看命令历史
$ git reflog //版本更改日志,可以查看之前的版本号
  • 撤销最近一次修改
$ git checkout -- filename //回到暂存区的版本或回到分支上的版本(如果暂存区没有的话)
$ git reset HEAD filename //回到分支上的版本
  • 删除仓库中的文件
$ git rm filename
  • 若使用git rm删除了文件还没有commit修复办法
git restore --staged <filename> //在暂存区修复文件
git restore <filename> //修复文件即可 //或者git checkout <filename>

其他概念:

git add 是把所有修改的部分放到暂存区内,git commit 是把暂存区内的所有内容提交到分支上。

由本地同步到远程

由于本地git仓库和远程git仓库是通过SSH加密的,所以需要蛇者SSH秘钥:

1:在本地创建SSH key:

$ ssh-keygen -t rsa -C "youremail@example.com" //回车就好,然后在主目录里会生成.ssh文件夹,里面有公钥和私钥
# 没反应使用 ssh-keygen.exe 或者按table自动补全
# springcloud整合使用 ssh-keygen -m PEM -t rsa -b 4096 -C "xxx"

2:登录github账户,添加SSH key的公钥,这样github就知道是不是本人提交的

3:在github创建仓库

4:将本地仓库同步到远程仓库(先建立本地仓库再建立远程仓库)

$ git remote add origin https://github.com/yourname/name.git //使用https协议
//或者 git remote add origin git@github.com:yourname/name.git //使用ssh协议 快一点
$ git push -u origin master

5:更改后更新远程库

$ git push origin master

注意:若git remote add origin xxx出现 fatal: remote origin already exists. 先删除再add

另外一种从远程仓库克隆到本地

1:先在github建立一个仓库

2:从远程仓库克隆一个到本地

$ git clone git@github.com:yourname/name.git

分支管理

  • 创建分支
$ git checkout -b dev //创建并切换到分支
//相当于以下两条命令
$ git branch dev //创建分支
$ git checkout dev //切换到分支
  • 查看分支
$ git branch //列出所有分支,当前分支前标有星号
* dev
master
  • 合并分支 
$ git merge dev //合并分支 --在主分支上合并
//合并时禁用fast forward合并,把合并变成一次提交
$ git merge --no-ff -m "merge with no-ff" dev //生成新的commit,留存合并信息
  • 删除分支
$ git branch -d dev //删除分支 --在主分支上删除

注意:当master分支和其他分支有冲突的时候,git无法自动合并需要手动修改文件内容再合并

$ git commit -m "conflict fixed"
$ git log --graph --pretty=oneline --abbrev-commit //查看分支合并图
$ git log --pretty=oneline --abbrev-commit //查看分支commit id

临时分支管理

当前分支工作只进行到一部分时,git可以先将当前的工作保存,去进行另外的工作

  • 保存和恢复现场工作(暂存区的会丢掉)
$ git stash //保存工作现场
$ git stash list //查看stash内容
$ git stash apply stash@{0} //允许多次stash,恢复某一个现场
$ git stash pop //恢复工作现场,并删除stash内容
$ git stash apply //恢复工作现场,不删除stash内容
$ git stash drop //删除stash内容
  • 在某个分支上重复提交其他分支的提交
$ git cherry-pick <commit> //复制一个特定的提交到当前分支
  • 强行删除未合并的分支
$ git branch -D <branch> //强行删除

多人协作

  • 查看远程分支
$ git remote
$ git remote -v //查看远程库详细信息
$ git remote rm origin //删除已关联的远程库
//同时关联多个远程库,需要设置不同的远程库名字
$ git remote add github git@github.com:name/name.git
$ git remote add gitee git@gitee.com:name/name.git
  • 推送分支
$ git push origin master //主分支,要时刻与远程同步
$ git push origin dev //开发分支,也需要同步
  • 抓取分支(在别的机器上开发,克隆)
$ git clone git@github.com:name/name.git //克隆已有分支
$ git checkout -b dev origin/dev //在远程上创建新分支dev
  • 同时推送冲突时先pull最新的提交下来进行合并
$ git pull
$ git branch --set-upstream-to=origin/dev dev //如果pull失败是因为没有建立本地与远程的链接
//如果git pull有冲突,先解决冲突再commit->push
  • 整理分叉提交历史
$ git rebase

标签管理

  • 在某个分支上打标签
$ git tag <name>
$ git tag <name> <commit id> //给某个commit打标签
$ git tag -a <name> -m "tag information" <commit id> //打标签并添加标签信息
  • 查看标签
$ git tag //查看所有标签
$ git show <tagname> //查看标签信息
  • 删除标签
$ git tag -d <tagname>
  • 推送标签到远程
$ git push origin <tagname>
$ git push origin --tags //推送所有未远程的标签
  • 删除已推送到远程的标签
$ git tag -d <tagname> //先删除本地标签
$ git push origin :refs/tags/<tagname> //再删除远程标签,也是推送

忽略特殊文件

提交.gitignore文件到git,在.gitignore文件中写入要忽略的文件名或者文件夹或者文件规则。

  • 强制添加已忽略的文件到git
$ git add -f <filename>
$ git check-ignore -v <filename> //查看是哪条忽略规则忽略了

配置命令别名

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch //--global是全局参数,这些命令在这台电脑的所有Git仓库下都有用
$ git config --global alias.unstage 'reset HEAD' //撤销暂存区的修改
$ git config --global alias.last 'log -1' //显示最后一次提交信息
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"

注意:如果不使用--global参数,配置只对当前仓库有用,每个仓库的配置文件在.git/config文件中。

如果使用global参数,对此用户所有仓库有用,用户的配置文件在用户主目录下.gitconfig文件中。

配置别名也可以直接修改配置文件。

搭建git服务器

posted on   Bingmous  阅读(17)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示