作区--暂存区--分支
git init初始化git仓库
添加文件到本地git仓库:1、git add <file> 可反复多次使用,把文件修改添加到暂存区
2、git commit -m "message" 提交更改,把暂存区的内容提交到当前分支
git status查看工作区的状态
git diff readme.txt 查看修改的内容
git diff HEAD -- filename 查看工作区和版本库里最新版本的区别
版本回退:
HEAD指向当前版本,git允许在版本之间穿搜,git reset --hard commit_id返回到指定版本
git reset --hard HEAD^回退到上一版本
git log查看提交历史
git reflog查看命令历史,找到未来版本的commit_id
撤销修改:
git check -- readme.txt 把该文件在工作区的修改撤销,分两种情况:
1、文件修改后没有放到暂存区,撤销修改回到和版本库一样的状态
2、修改已添加到暂存区,又作了修改,撤销回到添加暂存区后的状态
git reset HEAD readme.txt把暂存区的修改撤销
删除文件:
git rm filename
git commit -m "remove filename"
误删:git checkout --filename 实质用版本库里的版本替换工作区的版本,但只能恢复到最新版本,最近一次提交后修改的内容会丢失
远程仓库:
将远程仓库与一个已有的本地仓库关联,然后将本地仓库的内容推送到远程仓库中。
自己搭建git服务器,建立远程仓库sample.git
将本地库和远程库sample.git关联,远程库的名字是origin
git remote add origin git@10.21.220.162:/srv/sample.git
git push -u origin master第一次将master分支的内容推送到origin库
git remote rm origin删除指定的远程仓库
git remote -v远程仓库查询
git clone 仓库名 从远程库克隆
git clone -b 仓库名 从远程库克隆特定的分支
分支管理:
git branch 查看分支
Git branch -a 查看所有分支
git branch name 创建分支
git checkout name 切换分支
git merge name 用于合并指定分支到当前分支
git branch -d name 删除分支
Git checkout -b 本地分支名 origin/远程分支名 创建分支并切换到此分支(采用此方法建立的本地分支会和远程分支建立映射关系)
生成patch
git format-patch HEAD^ 从最近一次打起
# git format-patch -s 4e16 // 某次提交以后的所有patch,--4e16指的是SHA1 ID
用于比较两次修改的差异
1.1 比较工作区与暂存区
git diff 不加参数即默认比较工作区与暂存区
1.2 比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
git diff --cached [<path>...]
1.3 比较工作区与最新本地版本库
git diff HEAD [<path>...] 如果HEAD指向的是master分支,那么HEAD还可以换成master
1.4 比较工作区与指定commit-id的差异
git diff commit-id [<path>...]
1.5 比较暂存区与指定commit-id的差异
git diff --cached [<commit-id>] [<path>...]
1.6 比较两个commit-id之间的差异
git diff [<commit-id>] [<commit-id>]
情况四:修改的文件已被git commit,但想再次修改不再产生新的Commit
# 修改最后一次提交
$ git add sample.txt
$ git commit --amend -m"说明"
git push <远程主机名> <本地分支名>:<远程分支名>