菜鸟笔记
提升您的技术认知

Git命令索引

 

记住这三个概念,工作区(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