工作区、暂存区、本地仓库 工作区git add 到暂存区 gitcommit 本地仓库 1、配置用户名和邮箱 git config --global user.name "xxx" git config --global user.email xxx@163.com 存储 git config --global credential.helper store //查看配置 git config --global --list 新建版本库 git init //本地当前目录下创建仓库 git init wenjijia // 再wenjianjia下创建仓库 git clone https://xxx //从远端克隆一个仓库 git status 查看仓库状态 git log 查看提交记录 git log --oneline 只显示提交的id和提交提示信息 git ls-files 查看暂存区的内容 HEAD 指向最新版本的id HEAD~ 或HEAD^ 指向上一个版本 HEAD~2 表示head 之前的第二个版本 git reset --soft 工作区和暂存区的内容还存在 重新提交 直接commit就行 git reset --hard 工作区和暂存区的内容都会被清空 需要重新创建文件,再git add …… git reset --mixed 默认为mixed 重新提交需要 git add 再次添加 git reset --head HEAD^ 回滚到上一个版本 git reflog 查看历史操作记录版本号 git reset -head 版本号 就可以回退到指定版本了 git diff 查看差异 git diff 默认比较的是工作区和暂存区的差异 git diff HEAD 比较工作区和版本库之间的差异 git diff --cached 比较暂存区和版本库的差异 git diff 版本1id 版本2id 查看两个版本之间的内容 git diff HEAD~ HEAD 比较上一版本与当前版本的区别 git diff HEAD~ HEAD filename 只查看两个版本中 filename 内容 工作区删除文件 file1.txt后需要 git add file1.txt git commit -m "提交提示" git rm filename 删除文件后 不用再执行git add 但需要 commit 一下 git rm --cached filename 只删除暂存区的filename .gitignore git忽略文件 filename 忽略filename文件 *.log 或略所有 .log 结尾的文件 如果已有 xxx.log 则 忽略对xxx.log无效 temp/ 忽略temp 文件夹 !lib.log 不忽略 lib.log /fileme 之忽略 当前目录下 fileme文件 xxx/ 忽略任何目录下的xxx文件夹 doc/*.txt 忽略 doc/下的 .txt 文件 不忽略 doc/a/ 下的txt 文件 doc/*/*.pdf 忽略 doc下及多级递增下的所有 pdf文件 2、远程仓库github 在根目录下 cd .ssh ssh-keygen -t rsa -b 4096 第一次执行直接回车就行 会生成密钥文件 第二次执行为了不覆盖之前的 需要指定生成的密钥文件名 ssh-keygen -t rsa -b 4096 test.pub test.pub 是新密钥文件名 此时会生成两个文件 test 和test.pub,test是私钥文件,test.pub 是公钥文件 将test.pub 内容复制到github 如果指定的密钥文件名需要再创建 config 文件内容是 Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/test # test 是私钥名称 然后回到工作目录执行 把远程仓库克隆到本地 git clone git@github.com:.... 回车 输入 创建密钥时设置的密码 此时的 git commit -m '' 并不会影响远程仓库 2.2、gitee 生成密钥 ssh-keygen -t rsa -C 邮箱 将公钥复制到gitee 测试是否配置成功 ssh -T git@gitee.com git push 把本地仓推送给远程仓库 git remote add origin git@github.com.... 关联远程仓库 git remote -v 查看当前仓库对应的远程仓库的别名和地址 git branch -M main 指定分支的名称为main ,默认分支就是main 所以可以忽略 git push -u origin main 把本地的main分支和远程的orgin 仓库的main 分支关联起来等同于git push -u origin main:main git pull orgin main:main 【orgin main:main】可以省略 ,从远端拉取内容到本地仓库 gitlib 可以搭建私有托管平台 git remote add gitlab git@... 关联gitlib仓库 git push gitlib main 推送到gitlib 仓库 3、分支 git branch 查看当前仓库中 所有的分支 git branch 分支名 创建新分支 git checkout 分支名 切换到分支 有风向 git switch 分支名称 切换分支2.23 版本之后的命令 git merge dev 是将dev分支合并到当前分支中 git merge --abort 合并过程中可以终止合并 git log --graph --oneline 查看分支合并情况图 git branch -d dev 删除 已经被合并的 dev 分支,如果没有被合并,不能被删除 git branch -D dev 不管dev是否被合并都会被删除 git commit -a -m “” 一个命令完成添加暂存和提交两个动作 git checkout -b dev 提交的id 回复dev 分支 git log --online --graph --decorate --all 查看图形化提交记录 此命令太长,缩短如下 alias graph="git log --oneline --graph --decorate --all" graph 就可以查看图形化提交记录了 git switch dev git rebase main 将当前dev分支编辑到目标main 分支上 git 解决冲突一、 git --hard FETCH_HEAD git pull 上面的解决方法非常非常的霸道,是可以解决这个错误,但是它会回到初始的节点,假如我有修改本地代码但是没有提交,那么使用reset初始,可能会丢失这些修改的代码。 git 解决冲突二、 git add . git commit -m '提交本地代码并且获取最新代码' //注释:获取源dev分支最新代码 git pull origin dev 合并两个库时:fatal: refusing to merge unrelated histories git pull origin master --allow-unrelated-histories