最开始接触git的时候看过廖雪峰的Git教程,但是平时使用的只有pull push这些,导致很多指令都不知道或者已经忘了,遇到问题都得靠百度,所以重新看遍教程顺便整理一下。
获取帮助Help
//如三种方法获得 config 命令的手册
$ git help config
$ git config --help
$ man git -config
配置Config
git配置文件目录说明
#--system 系统配置,查看或配置当前系统 config文件在系统目录下:/etc/gitconfig
git config --system user.email "邮箱地址"
#--global全局配置,查看或配置当前用户 config文件在用户目录下:~/.gitconfig
git config --global user.email "邮箱地址"
#--local 本地配置,查看或配置当前项目(默认,可省略) config文件在该项目目录下:.git/config
git config user.email "邮箱地址"
//配置账户信息
git config –global user.name "用户名"
git config –global user.email "邮箱地址"
//给指令起别名
//co代表checkout
git config –global alias.co checkout
//设置换行符不转换
//(windows中的换行符为 CRLF, 而在linux下的换行符为:LF,LF 将被转换成 CRLF)
git config –gobal core.autocrlf false
//设置为区分大小写
git config core.ignorecase false
//列出当前所有配置信息
git config[-local | -global | -system] --list
//查看某一项配置
git config <key> 如:git config user.name
创建版本Create
克隆远程仓库:git clone ssh://user@git.com/demo.git [自定义仓库名称]
初始化本地仓库:git init
查看更改Diff
查看工作区状态: git status
查看修改内容:
//工作区和暂存区的区别
git diff
//暂存区和分支的区别
git diff --cached
//工作区和版本库里面最新版本的区别
git diff HEAD
修改和提交Commit
添加文件到缓存区:
git add 文件名
git add . //提交未跟踪和修改文件,但是不处理删除文件
git add --all || git add -A //提交所有文件(包括删除的文件)
提交缓存区内容到本地仓库:
//只会提交添加到缓存区的文件(只提交添加的)
git commit -m "注释"
//可以提交修改过,但是没有添加到缓存区的文件(修改过的就能提交)
git commit -a -m "备注"
//重新提交,会覆盖之前的提交信息
git commit --amend
提交历史Log
git log //显示从最近到最远的提交日志(详细)
git log --pretty=oneline //只显示commit id(版本号)和注释
git reflog //记录你的每一次命令
直接查看文件
目录.git\logs\refs\heads可以查看commit id(版本号)和注释
分支Branches
git branch //列出本地所有分支,当前分支前面会标一个*号
git branch -a //列出本地和远程上所有分支,当前分支前面会标一个*号
git branch -r //列出所有远程分支
创建新分支:
git branch branchName
删除分支:
git branch -d branchName
//没有被合并过的分支,需要强行删除
git branch -D branchName
合并分支:
//合并指定分支到当前分支
git merge branchName
//加上--no-ff参数,合并后的历史有分支,能看出来曾经做过合并
git merge --no-ff -m "说明" branchName
切换分支:
//切换到新分支
git checkout branchName
//新版本也可以使用switch
git switch branchName
//创建并切换到新的分支
git checkout -b branchName
git switch -c branchName
//检出远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
git checkout -b dev origin/dev
//指定本地dev分支与远程origin/dev分支的链接
git branch --set-upstream-to=origin/dev dev
cherry-pick 复制一个特定的提交到当前分支
git cherry-pick [commit id]
标签Tag
创建的标签都只存储在本地,不会自动推送到远程。
查看所有标签:git tag
新建标签,可为指定提交增加标签:git tag 标签名 [commit id]
创建带有说明的标签:git tag -a 标签名 -m "说明" [commit id]
查看标签的详细信息:git show 标签名
推送标签到远程:
//推送指定标签到远程
git push origin 标签名
//推送全部尚未推送到远程的本地标签
git push origin --tags
删除标签:
//删除本地标签
git tag -d 标签名
//删除已经推送到远程的标签
1.先本地删除 git tag -d 标签名
2.从远程删除 git push origin :refs/tags/标签名
远程Remote
远程仓库的默认名称是 origin
建立远程仓库与本地的关联 :git remote add origin git仓库地址
更换远程仓库地址: git remote set-url origin 远程仓库地址
删除远程库(解除本地和远程的绑定关系):git remote rm origin
查看远程仓库信息:
//只列出远程仓库名称如origin
git remote
//显示远程仓库详细地址
git remote -v
推送Push
提交本地分支到远程仓库: git push -u origin master
由于远程库是空的,第一次推送
master
分支时,加上了-u参数,Git不但会把本地的master
分支内容推送到远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令直接git push origin master
指定本地master
分支与远程origin
分支的链接: git branch --set-upstream-to=origin/master master
拉取Pull
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
git pull 和 git pull --rebase 结果一样
git pull --rebase 把你的本地当前分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),然后把本地当前分支更新为最新的”origin”分支,最后把保存的这些补丁应用到本地当前分支上,产生一个更为整洁的提交历史。
版本回退Reset
git reset --hard commit_id/HEAD^ 恢复版本
(HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100) 回退到commit_id版本,暂存区和工作区的内容丢失
git reset --Mixed (default) commit_id/HEAD^
回退到commit_id版本,改变HEAD和暂存区,工作区文件不被改变,会显示工作目录下有修改,但没有缓存到工作区
git reset --soft commit_id/HEAD^
撤销commit信息,但是写的代码仍然保留,index和working copy中的文件都不改变。
●HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset commit_id。
● 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
● 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
上传本地项目到github https://blog.csdn.net/weixin_42735261/article/details/82870851
Git遇到的问题及解决https://blog.csdn.net/weixin_42735261/article/details/122433141