Git使用是每个程序员必不可少的技能,因此在最开始我们就打好基础,详细学习一下Git吧!
定义
分布式版本控制系统
无中央服务器
Bazaar
BitKeeper
GIT
工作区(Working Directory)
版本库(Repository)
工作区中有个隐藏目录.git
暂存区(stage)
Git为我们创建的第一个分支master
指向master的一个指针HEAD
集中式版本控制系统
版本库(仓库)集中存放在中央服务器
SVN
VSS
CSV
git仓库与远程仓库
与远程仓库建立连接
git remote add origin
远程仓库链接提交代码到远程仓库
git push origin 分支
第一次:git push -u origin master
删除远程库
git remote rm
查看远程库信息
git remote/git remote -v查看更详细的信息
从远程库克隆
git clone + 远程仓库的地址
从远程仓库拉取最新的代码并自动合并到当前分支
git pull = git fetch + git merge git pull --rebase = git fetch + git rebase
常用命令
初始化仓库
git init
添加文件到Git仓库
1.git add 可以多次添加后再commit
2.git commit -m
查看当前仓库的状态
git status
查看修改的内容
git diff:比较工作区和暂存区,暂存区为空时,比较的就是工作区和仓库,因此和git diff HEAD相同
git diff HEAD:比较工作区和仓库
git diff --cached:比较暂存区和仓库
查看Git提交历史的命令
git log
--oneline:以一行的方式显示每个提交的简洁信息
--graph:以图形化的方式显示提交历史,展示分支和合并操作
--decorate:显示分支和标签指向的提交
--author=<作者>:只显示指定作者的提交记录
--since=<日期>:只显示指定日期之后的提交记录
--until=<日期>:只显示指定日期之前的提交记录
回退到上个版本
git reset --hard HEAD^
git reset HEAD~2 向上两个
git reset HEAD^ 向上1个
回退到某个版本后,再前进到未来版本
git reset --hard 版本号
查看命令历史,以确定到哪一个版本
git reflog
撤销文件在工作区中的修改(其实是用版本库里的版本替换工作区的版本)
git checkout -- file
-
修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
-
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态
修改文件并提交到暂存区,丢弃修改
1.git reset HEAD 把修改文件移出暂存区
2.git checkout -- file撤销工作区修改
创建并切换到该分支
git checkout -b 分支
git branch 分支 + git checkout 分支
git switch -c dev
查看当前分支
git branch
合并指定分支到当前分支
git merge 指定分支
git merge --no-ff 指定分支 表示禁用Fast forward合并
git rebase
优点:合并后有漂亮的提交记录 缺点:细枝末节的提交记录不清晰
删除某个分支
git branch -d 分支
丢弃一个没有被合并的分支(强制删除分支):git branch-D 分支名称
切换到已有分支
git checkout 分支
git switch 分支
查看分支合并图
git log --graph
储藏当场工作,恢复后继续工作
git stash
查看储藏列表
git stash list
恢复储藏内容
恢复stash的内容但stash中的内容未删除:git stash apply
删除stash中的内容:git stash drop
恢复并删除stash中的内容:git stash pop
多次stash,恢复指定的stash
git stash apply stash@{0}
丢弃没有被合并过的分支,强行删除分支
git branch -D
从其他分支选择任意一个或者几个或者一段提交,合并到HEAD所指定的位置
git cherry-pick
从远程仓库中拉去最新代码到当前分支但不合并
git fetch
在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
建立本地分支和远程分支的链接关系
git branch --set-upstream-to origin/
撤销更改,会创建一个新的commit来撤销指定的更改,撤销更改时应逆序
git revert (一般用于远程更改):
git revert HEAD^ 向上1个
对提交记录作个排序
git rebase -i HEAD~n
标签管理
新建标签
git tag ,默认为HEAD,也可以指定一个commit id
查看所有标签
git tag
删除标签
git tag -d 标签名
推送标签到远程
git push origin
一次性推送全部尚未推送到远程的本地标签
git push origin --tags
删除远程标签
1.从本地删除:git tag -d 标签名 2.从远程删除:git push origin :refs/tags/标签
显示指定提交或文件的详细信息
git show