Git 梳理笔记

Git 梳理笔记

教室地址
学习该教程过程中,所做的笔记。

git 入门

本地仓库创建

git init :执行后可以看到,仅仅在项目目录多出了一个.git 目录,关于版本等的所有信息都在 这个目录里面

克隆远程仓库

git clone [url] : url 就是远程 git 项目的地

查看文件状态

git status [filename]

添加文件到暂存区

git add

提交暂存区文件到本地仓库

git commit -m “message”

创建分支

git branch [name]

切换分支

git checkout branchName

创建并切换分支

git branch -b [name]

ssh 测试是否生效

ssh -T git@github.com

忽略文件

不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等, 在主目录 下建立".gitignore"文件(默认就有)。

git文件管理

文件的四种状态

  • Untracked :未追踪,此文件在文件夹中,但没有加入到git库中,不参与版本控制。

​ 如果通过git add,状态变为Staged。

  • Unmodify :文件已入库,未修改。即版本库中的文件快照与文件夹中完全一致。

​ 如果它被修改,状态变为Modified。

​ 如果通过git rm 移除版本库,状态变为Untracked

  • Modified :文件已修改,并没有进行其他操作。

    如果通过git add,状态变为Staged。

    如果通过git checkout,状态变为Unmodified。 git checkout即从库中取出文件,覆盖当前修改。

  • Staged :暂存状态。

​ 如果通过git commit,状态变为Uncomdified。git commit即将修改同步到库中,本地和库一致。

Git 版本回退

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。( git restore <file>)

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD <file>,( git restore --staged <file> )就回到了场景1,第二步按场景1操作。

场景3 :已经提交了不合适的修改到版本库时,想要撤销本次提交,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard [commit_id]

Git 分支操作

分支可以有多个(根据业务需求) 。

如果各分支没有交集,始终平行发展,则不需要合并(merge) 。

如果两个分支,需要合并,则执行 merge 操作。

  • 查看分支:

    • git branch

    • git branch -r 列出远程 分支

    • git branch -a 列出所有分支

  • 新建分支

    • git branch <branch-name>
  • 切换分支

    • git checkout <branch-name>
    • git switch <branch-name>
  • 创建+切换分支

    • git checkout -b <branch-name>
    • git switch -c <branch-name>
  • 合并某分支到当前分支:

    • git merge <name>
    • git merge --no-ff -m "merge with no-ff" <branch-name>
      • 用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
  • 删除分支:

    • git branch -d <name>
  • 复制一个特定的提交到当前分支

    • git cherry-pick <commit id>

远程库

关联远程库 git remote add <origin> git@server-name:path/repo-name.git

解除远程库:git remote rm <origin>

查看远程库信息:git remote -v :如果没有推送权限,就看不到push的地址。

推送分支 git push <remote> <branch>

拉取分支 git pull <remote> <branch>

关联远程分支 git branch --set-upstream [branch] [remote-branch]

在本地创建和远程分支对应的分支 git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致

改变树结构

git checkout <commit id> 分离HEAD,HEAD指向某个提交

git checkout <name> ^ HEAD 指向 name 分支的父节点·

git checkout <name>~<num> HEAD 指向name 分支上面第n个节点

保存工作现场

Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:git stash

查看工作现场:git stash list

恢复

git stash apply <stash@{number}> 但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

常用命令

# 列出所有本地分支
$ git branch 
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 新
$ git switch -c dev
# 新建一个分支,指向指定 commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 新
$ git switch master
# 切换到上一个分支
$ git checkout - 
# 合并指定分支到当前分支
$ git merge [branch]
# 选择一个 commit,合并进当前分支
$ git cherry-pick [commit]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
# 显示最近到最远的提交日志, 我们可以看到三次提交
$ git log 
$ git log --pretty=oneline
$ git log --graph --pretty=oneline --abbrev-commit
# 记录你的每一次命令
$ git reflog

使用git获取github上代码时报错:OpenSSL SSL_read: Connection was reset, errno 10054

(此时又必须开着vpn才能访问到github)

参考网上的回答,成功解决问题:

修改设置,解除ssl验证git config --global http.sslVerify “false” 此时,再执行git操作即可。

注:设置后关闭当前git窗口,重新打开再执行git操作

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值