Git基础命令

git add 添加
git init 初始化
git commit -m 提交
git status 状态
git diff 工作区(work dict)和暂存区(stage)的比较
git diff —cached 暂存区(stage)和分支(master)的比较
git reset HEAD 把暂存区的修改撤销掉(unstage),重新放回工作区
git commit —amend 修改最后一次提交的内容,可以仅修改message,也可以添加新的文件(按正常步骤add,然后输入该命令提交)
head 指向的版本就是当前版本
git reset —hard commit_id 回到某历史版本
git log 查看提交历史,以便确定要回退到哪个版本
git reflog 查看命令历史,以便确定要回到未来的哪个版本
git remote add origin [email protected]:path/repo-name.git 关联一个远程库
git remote -v 查看远程库信息
git remote rm origin 删除已有的GitHub远程库
git remote rename origin mine 重命名origin为mine
git push -u origin master 第一次推送master分支的所有内容
git push origin master 推送最新修改
git branch dev 创建dev分支
git checkout -b dev 创建并切换一个新分支dev
git branch 查看当前分支
git checkout dev 切换到dev
git merge dev 合并dev分支到当前分支
git branch -d dev 删除dev分支,如果有未提交的内容, 需要用-D强制删除
git log —graph 分支合并图
git merge —no-ff -m “merge with no-ff” dev 禁用Fast forward,然后合并
git stash 存储当天工作现场,等以后恢复现场后继续工作
git stash list
git stash apply 恢复存储的工作现场
git stash drop 删除存储的工作现场
git stash pop 恢复的同时并删除
git pull origin master 从远程origin抓取最新的分支master的commit,并合并master和origin/master分支
git fetch origin master origin/master分支和远程同步,但master分支不动,可自行merge合并(主要用在,本地和远程都有各自的新commit,这种情况下,无法pull,所以要先fetch,然后merge合并修改,最后把本地最新 版本push到远程)
git branch -b dev origin/dev 在本地创建和远程分支对应的分支
git branch —set-upstream-to=origin/dev dev 把本地dev和远程dev链接
git rebase 把本地未push的分叉提交历史整理成直线
git tag v1.0 为当前分支的commit打标签”v1.0”
git tag 查看所有标签
git log —pretty=oneline —abbrev-commit 历史提交的commit id
git tag v0.9 f52c634 为commit id为f52c634打标签v0.9
git show v0.9 查看标签信息
git tag -a v0.1 -m “version 0.1 released” 1094adb 添加标签说明
git tag -d v0.1 删除标签
git push origin v0.1 推送标签到远程
git push origin —tags 推送所有标签到远程
git push origin :refs/tags/v0.9 删除远程标签
git revert 2724e05 撤销该commit的修改,并创建新的commit,记录该还原
git reflog 查看所有记录日志
git reset HEAD —mixed(默认参数) 将HEAD的commit(最新的提交)恢复到工作区—soft 恢复到暂存区—hard 删除更改^ – 表示父 commit~ – 表示第一个父 commit
git shortlog 每位贡献者在此仓库中添加了多少 commit , -s 仅显示数量-n 按数量排序
多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin 推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

  3. 如果合并有冲突,则解决冲突,并在本地提交;

  4. 没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
    如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch —set-upstream-to origin/
    这就是多人协作的工作模式,一旦熟悉了,就非常简单

从.git文件夹恢复仓库文件

cd repo.git

创建budele文件

git bundle create ./reponame.bundle —all

从bundle文件中clone出代码

git clone ./reponame.bundle reponame

这是文件夹内会出现一个 reponame 文件夹,这个文件夹内就是所有的代码文件并且还可以恢复其他分支的代码

git clone -b release ./reponame.bundle reponame

新建新的git仓库 名为 newrepo

git remote rm origin

url.git 为新的git仓库地址

git remote add origin newrepo.git