问题1:fatal: refusing to merge unrelated histories
解决方案:在操作命令后面加--alcalow-unrelated-histories
问题2:本地没有远程新增加的分支信息
git fetch origin (拉取远程分支信息)
问题3:删除远程分支存在的文件
git rm -r -n --cached <文件路径>(预览将要删除的文件)
git rm -r --cached <文件路径>(确定无误后删除文件)
git commit -m "提交说明"
git push
问题4:@@ -2,5 +2,6 @@的含义:
终端所展示的文本,在新旧文件中所处的行数;-表示旧文件(版本库);+表示新文件(工作区)。
-2,5:终端所展示的文本,在旧文件中,所处于第2~5行
+2,6:终端所展示的文本,在新文件中,所处于第2~6行
常用命令
git init 将当前目录变成git管理目录
ls -ah 查看隐藏目录文件
git add <file> 添加文件到仓库
git commit -m <message> 提交文件到仓库
git status 当前仓库状态
git diff <file> 查看文件修改地方
git log 查看提交日志
git log --pretty=oneline 查看简易提价日志
git reset --hard HEAD^ 回退一个版本(注意:工作区和暂存区的修改都会被删除)
git reset --hard HEAD^^ 回退两个版本
git reset --hard HEAD~100 回退100个版本
git reset --hard 1094a 回退到指定版本
git reflog 查看记录的每一次命令
git add 把文件添加到暂存区(stage),git commit 把文件提交到分支。创建版本库时,git自动为我们创建了唯一一个master分支,所以git commit 直接把文件提交到master分支。
git diff HEAD -- <file> 查看工作区和版本库里最新版本区别
git checkout -- <file> (或者git restore <file文件名称>) 回退到最近一次git commit或git add时的状态
git reset HEAD <file> 回退暂存区(stage)到工作区
git checkout HEAD <file> 回退到最近一次git commit
rm <file> 删除本地文件
git rm <file> 添加要删除的文件
git commit -m "remove file" 提交要删除的文体
远程仓库
git remote add origin git@github.com:lt/learngit.git 添加远程仓库,origin 是url的别名
git push -u origin master 推送本地提交到远程
git remote -v 查看远程库
git remote rm origin 删除远程库
git config pull.ff false 设置默认策略
git pull 先尝试快进合并,如果不行再进行正常合并生成一个新的提交
git clone git@github.com:lt/learngit.git 从远程克隆仓库
git push origin dev 推送origin的dev到远程仓库
分支管理
git checkout -b dev 创建dev分支,并切换到dev分支
git checkout -b dev origin/dev 创建远程origin的dev分支到本地
git pull <remote仓库地址别名> <remote仓库中某个branch名称> 拉取远程remote的branch分支
git branch --set-upstream-to=origin/dev dev 指定本地dev分支tracking远程origin/dev分支
相当 git branch dev ,git checkout dev 两条命令
git branch 查看当前分支
git checkout master 切换回master分支
git merge dev 合并dev分支到master分支
git branch -d dev 删除dev分支
git branch -D dev 强行删除dev分支
git switch -c dev 创建并切换到dev分支
git switch master 切换到master分支
git merge --no-ff -m "merge with no-ff" dev 禁用Fast forward模式,在merge时生成一个新的commit
git stash 储藏工作区的修改
git stash list 查看储藏list
git stash apply 恢复修改到工作区
git stash drop 删除stash记录
git stash apply stash@{0} 恢复到指定的stash
在master上修复bug的提交记录,复制到dev分支
git checkout dev
git cherry-pick <commit记录的id>
git rebase 把分叉的提交变成一条直线
git tag <name> 创建一个tag
git tag 查看所有tag
git tag <name> <commit id> 指定提交记录创建tag
git tag -a <name> -m "说明文字" <commit id> 用-a指定标签名,-m指定说明文字
git show <tagname> 查看指定tag名称的提交记录
git tag -d <name> 删除标签
git push origin <tagname> 推送某个标签到远程
git push origin --tags 一次性推送所有尚未推送到远程的本地标签
git push origin :refs/tags/<tagname> 删除指定远程标签
git config --global color.ui true 配置全局配置
git config --global alias.st status 给git status添加别名 git st
.gitigonre
git add -f App.class -f强制添加App.class到git
git check-ignore -v App.class 检查忽略文件对App.class规则
# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class
# 不排除.gitignore和App.class:
!.gitignore
!App.class