记住这三个概念,工作区(working area),暂存区(stage),版本库,通过add,工作区的变化到暂存区,通过commit暂存区的变化到本地版本库,通过push本地版本库的变化到远程版本库。下面是常用的命令。
保存进度恢复工作进度
#把工作区和暂存区的内容保存到进度列表里
git stash save “description”
#把工作区和暂存区的所有内容都保存到进度列表里,包括untracked的文件。
git stash save -u 'description'
#列出stash里的所有项
git stash list
#把进度恢复出来并删除进度列表中的项
git stash pop stash@{2}
#只把进度恢复出来,不删除进度列表中的项
git stash apply stash@{1}
#丢弃进度列表中的相关项
git stash drop stash@{3}
查看变化
#暂存区与工作区相比较的变化
git diff
#版本库和工作区相比较的变化
git diff head
#版本库和暂存区相比较的变化
git diff -cached
#将工作区与stash对比
git stash show -p stash@{0}
提交变化
#把工作区中文件fielname的变化提交到暂存区
git add filename
#把本地文件的变更(修改,删除)保存到暂存区
git add -u
#把本地文件的变更(修改,删除,新增)保存到暂存区
git add -a
#交互式命令
git add -i
#把暂存区的变化提交到版本库
git commit
#把版本库提交到远程仓库
git push
恢复内容从版本库或暂存区到暂存区或工作区
#把暂存区的内容覆盖到当前工作区
git checkout -- filename
#切换分支
git checkout hongchangfirst/vice
查看日志
git log --graph --oneline --decorate
查看当前状态
git status
重置已有提交
#改变master的指向,也替换暂存区和工作区
git reset --hard
#只改变master的指向
git reset --soft
#只改变master的指向和暂存区的内容,但不改变工作区的内容
git reset
git reset --mixed
里程碑
#对某一次提交建立一个标签
git tag -m “description” old_milestone
删除文件
#只在工作区中删除
rm filename
版本克隆与同步
git clone repository workingdirectory
git pull=git fetch git merge
git push
清理(无引用的)悬挂的松散对象
#查看悬挂松散对象
git fsck
#清理悬挂松散对象
git prune
创建分支,切换到分支上
#创建分支
git branch branchone
#切换到分支上
git checkout branchone
#创建分支branchone并切换到其上
git checkout -b branchone
#推送到远程分支
git push origin branchone
#设置上游分支
git branch --set-upstream-to=origin/branchone
#删除本地分支
git branch -d branchone
#删除远程分支,注意冒号前边有一个空格,代表推送空分支到远程分支,等同于删除。
git push origin :to_be_deteled_branch
查看哪些提交领先于远程版本
git cherry
复制commit
git cherry-piek commit_id
复制另一个分支的顶部commit
git cherry-pick zhc-branch
复制另一个分支的第二个commit
git cherry-pick zhc-branch~2
git的文件忽略(.gitignore)只对未入库的文件起作用。
git对象库的四类对象:commit,blob,tag,tree
生成patch和打patch
git diff > zhc.patch
git apply zhc.patch
然后git add commit