实际使用基础操作记录
git的小游戏可以方便理解
https://learngitbranching.js.org/?locale=zh_CN
git 分四个区域 workspace(工作区) index(暂存区) 与 local repositorty(本地仓库) remote(远程仓库)
工作区是自己代码的地方 add 之后回到index(暂存区)
暂存区(stage/index)是存放改动的地方 commit 回到 本地仓库 (local repostorty)
本地仓库 是安全存放数据的位置,commit的都在这HEAD指向当前分支,push之后会到远程仓库(remote)
git rebase -i HEAD~4 (在前面四个提交记录中随便更换位置选择性合并)
git revert 版本号 (去除之前某一个commit但后续的commit保留)
git push origin --delete 分支名 (删除远程分支)
git init 初始化本地分支
git remote (查看远程分支信息 )
git remote -v (查看详细信息)
git remote add origin https://xxx (本地先添加远程仓库)
git push -u origin master (向远程仓库推送)
git push - -set-upstream origin Link (向远程仓库推送分支 分支名字为Link )
git checkout Link 切换分支到Link (前提是Link分支存在)
git checkout -b Link 建立并切换到分支Link
git checkout -- 文件名 (把对文件的修改恢复到未修改状态,如果是checkout . 将会恢复所有修改的文件)
git add 文件名 (工作区文件加入版本库中)
git commit -m ” 提交信息“ (提交修改到本地仓库)
git commit --amend (可以修改提交注释)
git merge --abort (撤销merge 但是未add的代码)
git checkout . (撤回所有修改,还未add的修改)
git reset HEAD (恢复到上次到状态,对于add未commit的状态的,回到add操作之前)
git reset --mixed HEAD^ (恢复上次提交,取消commit ,也取消add ,暂存区修改仍在)
git reset HEAD^ (同上)
git reset --soft HEAD^ (执行后代码修改不变,commit被回退。不撤add )
git reset --hard HEAD^ (执行后暂存区代码消除,commit被回退。不撤add )
git push origin HEAD --force (强制推送到远程分支)
git branch 查看本地分支
git brancn -r 查看远程分支
git branch -a 查看所有分支
git branch -d 分支名 (删除本地分支)
git branch -D 分支名 (强制删除分支)
git push origin - -delete 分支名 (删除远程分支)
git rm -rf . (慎用 用来删除分支内容 "." 匹配此路径下所有文件 -rf循环强制删除 可以用来创建空分支并且推到远端)
git log 查看提交日志 (后面加- - stat查看修改的具体文件)(后缀还有很多可用此处省略)
git log -p 展示更改详情
git log --pretty=oneline (只显示版本号和具体的操作)
git reflog (可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作))
git push origin HEAD --force (强制推送到远端,是在使用ret恢复本地再恢复远端的操作)
git blame 文件名 (查看具体文件更改)
git show 版本号 展示指定版本具体操作
git reset - -soft 版本号 (回退到指定版本 撤销commit 不撤销add)
git reset - -hard 版本号 (回退到指定版本 撤销commit 也撤销add)
git revert -n 版本号(撤销此版本的commit修改,但是之后的版本修改保留,之前哪个commit不需要或错误可以使用)
git stash save "信息" 暂存当前改变 文件要add到版本库中不然无法保存、
git stash list (显示暂存的列表)
git stash apply (恢复刚刚存储的内容,但是不删除)
git stash pop (释放暂存的第一个,并删除内容)
git diff 分支名字 (比较分支差异)
git diff HEAD - - 文件名 (
可以查看工作区和版本库里面最新版本的区别)
git diff {查看 workspace(工作区) 与 index(暂存区)的差别}
git diff --cached {查看 index(暂存区) 与 local repositorty(本地仓库) 的差别}
git diff HEAD {查看 workspace(工作区) 和 local repository(本地仓库) 的差别}
git merge 分支名 (合并分支 应该是合并本地仓库已经commit的代码)
*** git cherry-pick 版本号 (将指定的提交(commit)应用于当前分支。)
git cherry-pick A..B (将A到B的一系列commit都应用于当前分支,但是A不包含在其中)
git cherry-pick A^..B (包含A的commit A B 顺序要正确)
冲突中断 ,解决后add添加文件后 git cherry-pick - -continue继续合并 ,合并的版本必须为本地存在的commit版本,合并其他人的远程版本无效
git cherry-pick - -abort (放弃合并 回到之前)
git fetch (从远程获取最新版本到本地,不会自动合并分支)
git pull (默认行为是git fetch + git merge)
git rebase(重新定义起点)
git rebase --abort (回到rebase之前) 和 git merge --abort 类似(回到merge 之前)
git rebase --skip (将引起冲突的commits丢弃掉,无视其他人的修改)
git rebase --continue (用于修复冲突)
git pull --rebase (会将本地当前分支里的每个提交(commit)取消掉,然后把将本地当前分支更新为最新的"origin"分支)***