一. 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 是如何知道你当前在哪个分支上工作的呢?
-
HEAD是一个特别的指针,指向正在工作中的本地分支的指针,也就是说切换到哪个分支,它就会指向哪个分支。
-
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 回滚代码