git init命令把这个目录变成Git可以管理的仓库
- 创建一个目录 mkdir learngit
- cd 到该目录 cd learngit 运行git init
git add告诉Git,把文件添加到仓库--git add 是吧修改的文件 添加到缓存里
git add readme.txt
git commit -m "wrote a readme file"提交修改 -m是添加commit说明 可选项
git status - 命令可以让我们时刻掌握仓库当前的状态, 有没有文件改变
git diff -
顾名思义就是查看difference,显示的格式正是Unix通用的diff格式
git log
命令显示从最近到最远的提交日志 ctrl+c 退出显示log界面
git reset --hard HEAD^ 恢复到上一个版本
git reset --hard HEAD^^
恢复到上上一个版本
git reset --hard HEAD~100
恢复到以前指定数目一个版本
git reflog
用来记录你的每一次命令可以找到 commit id号 ctrl+c 退出显示log界面
git reset --hard 3628164 恢复到指定commit版本 版本号可通过git reflog查询
git diff HEAD -- readme.txt 查看工作区和版本库里面最新版本的区别
撤销修改
git checkout -- readme.txt
把readme.txt
文件回到最近一次git commit
或git add
时的状态, 如果没有--
,就变成了“创建且个it切换到另一个分支”的命令
1)readme.txt 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状 态;
2)readme.txt 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的 状态
git reset HEAD readme.txt
用命令git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区
删除文件
git rm test.txt 然后
git commit -m "remove test.txt" 从库里删除一个文件
git checkout -- test.txt
把误删的文件恢复到最新版本
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
分支管理
git checkout -b dev 创建且切换分支 参数-b 表示创建并切换
- git branch dev
- git checkout dev
git branch 查看所有分支
git merge dev 合并指定分支到当前分支
git branch -d dev 删除分支
git log --graph 查看分支合并图
小结
Git 鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
解
决冲突
merge 如果发生冲突 需手动修改重复,重复提交
Git 用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存:
分支管理策略git merge --no-ff -m "merge with no-ff" dev 禁用 Fast forward 模式
git log --graph --pretty=oneline --abbrev-commit 查看分支的合并情况:
分支策略
master 分支应该是非常稳定,不能在上面干活
干活都在 dev 分支,发布时,再把 dev 分支合并到 master 上,在 master 分支发布 1.0 版本
git stash 以把当前工作现场“储藏”起来
git stash list 查看所有stash的信息
git stash apply 恢复stash 但内容不删除
git stash apply stash@{0} 恢复指定的 stash
git stash drop 恢复stash 且删除内容
远程操控
git remote 远程库的信息 远程仓库的默认名称是 origin
git remote -v 显示更详细的信息
git push origin dev 把该分支推送到远程库对应的远程分支
git pull origin first 拽取远程分支
多人协作的工作模式通常是这样:
首先,可以试图用 git push origin branch-name 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用 git push origin branch-name 推送就能成功!
git pull 提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建, 用命令 git branch --set-upstream branch-name origin/branch-name。
小结
查看远程库信息,使用 git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用 git push origin branch-name,如果推送失败,先用 git pull 抓 取远程的新提交;
在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-n ame,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用 git branch --set-upstream branch-name origin/ branch-name;
从远程抓取分支,使用 git pull,如果有冲突,要先处理冲突。
标签管理
git tag v1.0 分支打个标签 默认标签是打在最新提交的 commit 上
git tag 查看标签
git tag v0.9 6224937 对制定的commit id 打标签
git tag -a v0.1 -m "version 0.1 released" 3628164 打标签加说明文字
git tag -s v0.2 -m "signed version 0.2 released" fec145a 通过-s 用私钥签名加
git show <tagname> 查看标签信息:
小结
命令 git tag <name>用于新建一个标签,默认为 HEAD,也可以指定一个 commit id;
git tag -a <tagname> -m "blablabla..."可以指定标签信息;
git tag -s <tagname> -m "blablabla..."可以用 PGP 签名标签;
命令 git tag 可以查看所有标签。
标签操作
git tag -d v0.1 删除
git push origin v1.0 推送某个标签到远程
git push origin --tags 推送全部尚未推送到远程的本地标签
删除远程标
1)git tag -d v0.9 先删除本地
2)git push origin :refs/tags/v0.9 推送本地删除
小结
命令 git push origin <tagname>可以推送一个本地标签;
命令 git push origin --tags 可以推送全部未推送过的本地标签;
命令 git tag -d <tagname>可以删除一个本地标签;
命令 git push origin :refs/tags/<tagname>可以删除一个远程标签。
git config --global color.ui true 让 Git 显示颜色
git config --global alias.st status 给status 配置别名
git config --global alias.unstage 'reset HEAD' 配置别名例子2