Git 学习笔记

一. git命令

参考文章:
1.常用 Git 命令清单
2.细读 Git | 弄懂 origin、HEAD、FETCH_HEAD 相关内容

设置用户名和邮箱

git config --global user.name "xxxx"

git config --global user.email "xxxx@qq.com"

查看用户名和邮箱

git config --global user.name

git config --global user.email

查看配置文件

git config --list

找到当前文件夹

cd /Users/*****/gitTest

本地文件与远程仓库连接

本地仓库初始化

git init

添加一个远程仓库,与origin master建立连接

git remote add origin 远程地址(如https://gitee.com/float-white/designDemo.git)

若存在origin 则删除 git remote rm origin

git push -u origin master

将远程分支dev_*** 拉到本地

git fetch origin dev_***

在本地创建分支dev_local并切换到该分支,与远端分支dev_*** 建立连接

git checkout -b dev_local origin/dev_***

创建分支

git branch dev_local

切换分支

git checkout dev_local

创建并切换到目标分支

git checkout -b <分支名>

查看本地分支,带*表示当前使用的分支

git branch

查看所有分支,其中远程分支会用红色表示出来

git branch -a

查看远程的分支名

git branch -r

查看远程地址

git remote -v

删除分支

git branch -d <本地分支>

git branch -D <本地分支> //当本地分支未提交时,可强行删除

git push origin :<远程分支>

将某个分支上的内容拉取到本地

git check master // 先切换到本地master, 再执行 git pull 也可以,不用添加origin 远程分支名

git pull origin dev_***

git pull <远程主机名> <远程分支名>:<本地分支名>

git pull 执行时,默认只拉取head本分支的代码,其他分支并没有拉取下来。

提交代码至暂存区

git add 文件d

· git add -A 提交所有变化

· git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)

· git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

从暂存区提交到本地仓库

git commit -m "添加dto"

将文件提交到远程dev,如果远程没有dev分支,则将新建一个dev分支

git push origin dev

显示暂存区和工作区的差异

git diff

git diff 文件名

退出

英文情况下按Q

合并分支:合并前要先切回要并入的分支

以下表示要把dev分支合并入master分支

git checkout master

git merge dev

查看暂存区文件

git ls-files

将文件移出暂存区

git rm --cached +文件名

查看当前分支有变更的文件

git status

显示所有远程仓库

$ git remote -v

显示某个远程仓库的信息

$ git remote show [remote]

增加一个新的远程仓库,并命名

$ git remote add [shortname] [url]

#更新远程分支列表(git branch -a时总是不出现新的分支,或者远程已经没有的分支在本地还有,这时就需要更新下本地的git分支保持和远程分支一致)

git remote update origin --prune

git stash

1.git stash list 查看stash了哪些存储

2.git stash 存储已经被git追踪过的文件,新建文件无法存储

3.git stash -u 存储包含新建的文件

4.git stash pop 还原存储文件

5.git stash save "save message" 可以自定义存储信息

6.git stash save -u "messeag"

7.git stash clear 删除所有缓存的stash

注意:可以对此git stash,然后用git stash list查看存储记录,每次提交都有对应的索引,

但是恢复文件git stash pop ,只能恢复距离最近的一次存储( 即stash@{0} ),

可以多次利用git stash pop 来恢复。

git reset https://www.jianshu.com/p/c2ec5f06cf1a

git reset - -hard HEAD^ 回滚最近一次commit (撤销一次合并请求),本地修改的内容,已经git add的内容,都会消失。(清空本地和暂存区,保持和git reset的内容一致)

git reset - -soft HEAD^ 回滚最近一次commit,保留本地修改的内容和git add的内容,并且把最近一次commit的内容放进暂存区,即下次可以直接git commit。

git reset - - mixed HEAD^ 回滚最近一次commit,保留本地工作目录,清空暂存区,已经git add的内容也存进本地工作目录,最后一次commit的文件也放进本地工作目录。

修改最后一次commit提交信息

git commit --amend -m "update message"

将本地分支 与远程分支做关联,以解决 "There is no tracking information for the current branch",即"当前分支没有跟踪信息"

git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字

HEAD^ 与HEAD~1

HEAD^ 等用于 HEAD~1,表示回滚一次commit

HEAD^^^^^ 等用于 HEAD~5,表示回滚五次commit

git log

1.git log 查看历史提交

2.git log -p 查看详细提交

3.git log - -stat 查看简要统计

4.git show 查看最近一次commit的提交内容

5.git show 查看任意一次提交内容

git diff

1.git diff 查看未提交的内容

2.git diff - -staged 比较暂存区和上一条commit。 或者git diff - -cached

3.git diff HEAD 比较工作目录和上一条commit

git reflog

查看本地提交记录

回滚到某个分支

git reset --hard 02a3260

三.知识点

1.当从master分支下,新建一个dev分支时,此时master分支下的文件也会同时被拷贝一份到新的dev分支下,也就是说,新建分支的内容和master分支内容一样,

而本地新建分支需要获取其他远程分支时,需要再次 git pull origin (远程分支名)并且页面上显示文件就是新的分支的。

2.git pull = git fetch + git merge

Fetch是从远程仓库拉取所有分支到 《远程仓库在本地的副本文件夹》,代码并没有更新下来(只是想看提交轨迹,但并不想合并代码,可能含有很多冲突),再通过git merge,合并到分支中。

Pull则是直接拉取并合并

4.git clone git@github.com:***-spring/test-project.git test-project-another(自定义工作区文件夹名)

5.git合并过程

1.若本地含有未commit内容,则先需要git stash, 用git stash list 查看

2.提交本分支所有代码至远端,git push origin dev (head->dev)

3.切换到test路径,git checkout test, 拉取最新代码 git pull origin test, (此时 head->test)

4.将dev分支合并到test: git merge dev

若此时遇到冲突,右键-Git-resolve conflicts, 选择以左边(test) 还是以右边(dev)为主,提交;

再执行 git merge --continue (将两个线上分支,在本地合并后,效果等同于git commit);

若需要上传到远端,则需要再执行git push或者取消合并 git merge --abort

5.将最新test分支代码,提交至远端,git push origin test

6."HEAD" 的作用,git 是如何知道你当前在哪个分支上工作的呢?

  1. HEAD是一个特别的指针,指向正在工作中的本地分支的指针,也就是说切换到哪个分支,它就会指向哪个分支。

  2. git log 日志中展示 HEAD->master,指的是:当前是在master分支,当前指向的是master分支。

表示当前 master、test、origin/master、origin/test 处于同一commit位置,head表示当前指针指向 这次commit 位置

常见问题

1.error: src refspec master does not match any

error: failed to push some refs to 'https://gitee.com/float-white/seckill.git'

相当于初始化项目,一次性提交所有文件

解决方法:

git add . 添加所有文件

git commit -m "init" 一次性提交到本地仓库

git push -u origin master

2.gitee快速搭建

1.gitee 先创建仓库

2.到本地目录gitee_local, git clone XX

3.git remote add origin 远程地址(如https://gitee.com/float-white/designDemo.git) 若存在origin 则删除 git remote rm origin

4.在项目中 添加文件

5.常规更新

git add . 添加所有变更文件

git commit -m "message" 一次性提交到本地仓库

git push -u origin master 提交到远程仓库

注意:如果本地仓库是通过 git clone 下来的,Git 会默认将远程仓库命名为 origin,自动关联上远端仓库(可在 .git/config 文件中看到已有 [remote "origin"] 配置项了),无需git remote add origin,Commit 之后就能直接 Push 了

3.如果清除所有git 提交日志?

删除idea 项目,隐藏文件 .git

4.origin 等同于 git项目的下载地址

git push origin main 等于 git push https://gitlab.pin-dao.cn/sz-base-team/ehr-platform.git main

其中 origin 指向了 git@github.com:toFrankie/repo-demo.git 远程仓库

origin 只是一个名称(别名),用于指向远程仓库,也可以用bar、foo等任意别名,只不过所有代码托管平台默认就是 origin

5.Idea 回滚代码

相关推荐
用户1259265423202 小时前
使用 Docker 搭建 Gitea 并实现 Git HTTP 自动登录
git
饕餮争锋2 小时前
设计模式笔记_创建型_建造者模式
笔记·设计模式·建造者模式
萝卜青今天也要开心3 小时前
2025年上半年软件设计师考后分享
笔记·学习
amazinging3 小时前
北京-4年功能测试2年空窗-报培训班学测开-第四十七天
python·学习·selenium
吃货界的硬件攻城狮3 小时前
【STM32 学习笔记】SPI通信协议
笔记·stm32·学习
一个天蝎座 白勺 程序猿3 小时前
Python练习(1)Python基础类型操作语法实战:20道实战题解与案例分析(上)
开发语言·python·学习
蓝染yy4 小时前
Apache
笔记
努力的小帅4 小时前
STM32单片机_3
stm32·单片机·嵌入式硬件·学习·stm32c8t6
一只毛驴4 小时前
谈谈对git stash的理解?
git