git常用命令总结
设置用户名和邮箱
设置(切换)用户名:git config --global user.name "名称" 设置(切换)邮箱:git config --global user.email "邮箱 查看用户名:git config user.name 查看邮箱:git config user.email
查看所有配置: git config --list
从远程仓库拉取代码到本地
方法1:
git init 将此文件初始化为本地git仓库
git remote add origin 远程仓库地址 与远程仓库建立链接
git remote set-url 仓库名 仓库地址 用来改变已有仓库名的提交地址,也叫仓库迁移
git pull origin branc_name 将远程仓库的某一分支代码拉取下来
方法2:
git clone 远程仓库地址 直接把远程仓库代码克隆下来(方便快捷,推荐) 与上面的差别是,克隆会把整个项目文件夹拉取下来,上面的操作只会拉取项目文件夹下的所有文件
查看远程仓库地址:
git remote -v
如何查看,提交到本地仓库但未推送到远程仓库的代码
git log branch_name ^origin/branch_name 查看某一个分支的未推送到远程仓库的提交记录 如果有提交记录就代表这几次的提交没有推送到远程仓库
git status 也可以查看到是否有没有推送的提交
一次最普通的也是最经常的提交代码操作
git pull origin branch_name or git pull 将远程代码拉取到本地(每次提交前都要拉取一下代码,把别人的代码拉取下来)带origin 分支名的 是首次把某一个分支的代码拉取下来
git add * 把修改的所有文件添加到暂存区
git commit -m "本次提交的解释说明" 将暂存区的代码提交到本地仓库
git commit -am ‘本次修改说明’ 是将git add . 和 git commit 合并到一起的命令 前提是 此次提交没有新增的文件,因为新增的文件还未被追踪,不能用-am命令
git push origin branch_name or git push 将本地仓库的代码推送到远程仓库
分支操作
git checkout -b branch_name 新建并切换到一个分支
git checkout -b 本地分支名 origin/远程分支名 将远程分支拉去到本地(本地不存在)
git branch branch_name 新建一个分支 但不切换到这个分支
git checkout branch_name 切换到某一个分支
git branch 查看本地仓库分支列表
git branch --merged 查看所有已合并的分支(相对于主分支)
git branch --no-merged 查看所有未合并的分支(相对于主分支) 查出的结果不包括当前所在分支
git branch -a 查看远程仓库分支列表
git push origin branch_name 将某一分支上的代码推送到远程仓库 (实用于新分支首次推送,因为此时远程仓库并没有此分支,在当前分支也可以用这个命令把其它分支推送到远程仓库)
git merge branch_name 将某一分支合并到当前分支
git merge --abort 撤销本次合并
git branch -d branch_name 删除某一本地分支(不能是当前分支)
git push origin --delete branch_name 删除远程仓库某一分支
git push -d branch_name 删除本地分支
git branch --merged | egrep -v "(^\*|main|develop)" | xargs git branch -d 删除掉已经合并过的分支中的除main、develop以外的所有分支(只支持mac、lniux系统,windows需要在git bush上才能使用)
git branch --no-merged | egrep -v "(^\*|main|develop)" | xargs git branch -D 删除除main、develop分支以外的所有未合并的分支,删除未合并的分支需要用大写D
查看提交日志:
git log 普通的查看日志方法
git log -p -2 查看最近两次的提交记录和变动的地方
git log --oneline 让日志像是成一行,只显示 commit码和说明
git log --gragh 查看版本线图,只有一个分支的话五多大用处
git log --graph --oneline 让版本线看着更清晰
git log --pretty=oneline 日志变成一行的同时,显示完整的档案码
git log --pretty=format:"%h - %an, %ar : %s" 定制化日志格式 hash值(档案号)- 作者,多少时间前 : 提交说明
git log --author="作者名" 查询某个开发者的提交日志
查看此次修改的内容
git diff 查看此次修改的所有文件的修改
git diff index.html 查看此次index.html修改的内容
git diff --staged 当git add 追踪过后,用这个命令去查看修改的文件,如果commit执行后 git diff就不能查看了
git忽略文件配置
.gitignore 文件是唯一git可以识别的文件
/node_modules 忽略node_modules文件夹
*.log 忽略 .log结尾的文件
*.zip 忽略.zip结尾的文件
git rm -r --cached node_modules 假如失误将node_modules不该追踪的文件追踪了,可以用这个命令把这个文件从追踪里踢出来
git rm -r --cached . 把缓存中的所有文件都踢出来
回退操作
git rm --cache file_name 撤销缓存区的某一个文件的修改
git reset commit码 将本地代码重置到某一次提交,配合git log使用,如果想回退最近一次提交,那么需要重置到倒数第二次的commit码;这个操作,代码会重置到工作区
git reset --hard commitid 代码回退到某一次提交,删除此次提交之后的所有提交(慎用)。
git push -f or git push -f origin branch_name 本地版本回退后,强制覆盖到远程。git reset --hard 和 git push -f 这种组合要谨慎使用
删除远程已经不存在而本地存在的分支:
git remote prune origin
以上操作最为常用,建议使用sourcetree,会比命令行方便的多
同步远程分支所有信息(所有分支和tag或其它信息)
git fetch origin --prune
// 丢弃工作区的修改
git checkout -- file
// 撤回暂存区内容
git reset head <file>
// 撤回版本库内容
git reset --hard HEAD^ 回退到上一个版本
git reset --hard HEAD^^ 回退到上上个版本
git reset --hard commit_id
git checkout commit_id -- file 把某一个文件回退到某个版本,与上面3个不一样的是,保留中间的版本,只是把某一个文件回退到了之前的版本
git checkout commit_id -- . 把所有的文件修改到指定版本(保留中间的版本)
// 删除文件
git rm test.txt
fork的项目 如何拉去其他源的 代码
1、在fork项目上新增源仓库:
git remote add 源名称 http://xxx.git
2、拉去另一个源的某一个分支的代码,到当前分支
git pull 源名 分支名
git pull all develop 拉取 all源 上的develop分支 到当前源的当前分支
删除远程仓库文件:
比如删除 common文件夹 需要带 -r
git rm -r --cached src/components/common
设置git对文件大小写敏感:
git config core.ignorecase false
fork的项目,怎么同步正式仓库的分支
git remote update 正式分支仓库名 -p
有时候上面同步的分支不全,可以单独同步一个分支
git checkout -b branch_xxx --track 正式仓库名/branch_xxx
git cherry-pick 单独合并其它分支上的某一次提交的代码:
// 将commit码对应的那一次提交 合并到当前分支(直接到commit之后的状态:提交后的状态) git cherry-pick commit码 // 将commit码对应的那一次提交 合并到当前分支; 带上 -n 参数 相当于未添加到缓存区之前,可以手动撤回(add 之前的状态) git cherry-pick -n commit码
ssh-keygan 生成ssh公钥和私钥 公钥会写入到用户目录的.ssh文件中的id_rsa文件(私钥) 和id_rsa.pub文件 (公钥) (一般不为公钥设置密码)
将公钥放到github中,就可以用ssh连接github了 git clone 可以直接用ssh的地址
filezilla 软件可以可视化连接服务器
-