learning the git
1.创建repository 版本库
在需要的文件夹下面直接
git init2.时光穿梭机
1.版本回退
掌握工作区的状态,是否有修改 git status 查看修改的内容 git diff
对于已经 add commit的文件需要回到回退版本
第一步 查看git日志 git log 第二步 查看版本号 日志commit后面的数字 HEAD 表示当前版本 HEAD^ 上一个版本 HEAD^^ 上上一个版本 HEAD~100 前一百个版本回退到上一个版本 git reset --hard HEAD^
重返未来,需要查看未来commitId git relog
git reset --hard commitId2.工作区和暂存区
working directory and stage(index)
git add 添加文件 是将文件修改添加到暂存区
git commit 提交文件 把暂存区的所有内容提交到当前分支每次的修改 如果不 git add到暂存区,那么不会加入到 commit
3.撤销修改
撤销(丢弃))工作区的修改 git checkout -- file -- 这个很重要 git checkout file 表示切换到file branch 切换分支
unstage 暂存区的修改撤销掉 git reset HEAD file
git reset 既可以回退版本,也可以暂存区回退到工作区4.删除文件
两种删除方式 在文件管理器中 rm file git add file 和 git rm file 是相同的结果
git rm file git commit
误删除
将版本库的文件替换工作区的文件,一键还原
git checkout -- file如果你用的rm删除文件,那就相当于只删除了工作区的文件,
如果想要恢复,直接用git checkout -- 就可以如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,需要先git reset HEAD ,
然后再git checkout --如果你想彻底把版本库的删除掉,先git rm,再git commit
3.远程仓库
链接远程仓库
git remote add origin git@github.com:Geekdengshuo/repositoryName.git本地库推送到远程仓库
git push -u origin master 第一次推送
git push origin master 推送克隆远程仓库到本地
git clone git@github.com:Geekdengshuo/repositoryName.git使用ssh原生的git命令 要比https要快很多
4.分支管理
1.master分支
master分支是一条主线,master指向最先的提交,HEAD指向master2.创建和删除分支
创建分支并切换到分支 git checkout -b dev
相当于两个步骤 创建分支 git branch dev 切换分支 git checkout dev查看当前分支 * 表示当前分支 git branch
可以在当前分支dev继续提交 此时HEAD指向 dev dev向前移动
切换到主分支 git checkout master
将分支dev合并到master git merge dev
合并后可以删除分支 git branch -d dev
删除远程分支 git push origin -d
git push origin: 3.解决合并冲突master分支和 dev分支都有更新 git无法实现快速合并
查看分支合并情况
git log --graph 查看分支合并图
git log --graph --pretty=oneline --abbrev-commit
4.分支管理策略
分支合并 git merge 如果可能 git会使用 Fast forward方式
这种方式删除分支,会丢掉分支信息可以使用 --no-ff 模式 表示禁用Fast forward模式
git merge -no-ff -m "merge with no-ff" dev
-m 添加 commit 描述5.bug分支
修改master分支bug 但当前dev分支还没有提交
git stash 将当前工作“隐藏”起来
修改完后,恢复到当前dev分支进行恢复
git stash list 查看列表
git stash apply 恢复,并不删除
git stash drop 删除git stash pop 恢复同时把stash 内容删除
6.feature 分支
新建特征分支,再将特征分支合并到主分支上
强制删除 分支
git branch -D feature-branch7.多人协作
远程库信息 git remote
远程库相信信息 git remtoe -v推送分支 git push origin master
推送其他分支 git push origin devmaster 主分支必须推送
dev 开发分支需要远程同步 bug分支只是本地修复bug,没有必要推送到远程 feature 分支看是否进行合作抓取分支
小伙伴进行协同开发 1.git clone 仓库 2.git branch 只有master分支 3.git checkout -b dev origin/dev 创建远程origin的dev分支到本地 4.git add git commit 进行修改 5.git push origin dev 将dev分支push到远程小伙伴进行修改
你也对dev分支进行了修改1.git add git commit
2.git push origin dev 你的push和小伙伴有冲突 3.git pull git pull 先把最新的提交从origin/dev抓下来4.git pull 失败 本地dev分支和远程 origin/dev分支没有链接,根据提示设置链接5.git branch --set-upstream-to=origin/dev dev
6.git pull 合并有冲突 解决冲突 7.git commit -m "" 提交 8.git push origin dev8.rebase
rebase操作可以把本地未push的分叉提交历史整理成直线 rebase的目的是使得我们在查看历史提交的变化时更容易, 因为分叉的提交需要三方对比git rebase
5.标签管理
标签是版本库的一个快照,将版本库打一个标签 tag
tag就是一个commit tag 的标号比commit更好找
tag v1.2 commit 6a5819e创建标签
切换到需要标签的分支上 git branch git checkout master 打标签 git tag v1.0 查看标签 git tag对commit进行打标签 git tag v0.9 f52c633
带有说明的标签 git tag -a v0.1 -m "version 1.0 released" 1094adb查看标签信息 git show v0.1
删除标签 git tag -d v1.0 标签推送远程 git push origin v1.0 推送全部标签 git push origin --tags删除远程标签
先删除本地 git tag -d v0.9 远程删除 git push origin:refs/tags/v0.9使用Github
参加一个开源项目
1.向访问其他的主页,看到项目主页 进行fork 2.fork后在自己仓库克隆一个 3.从自己github clone代码到本地 必须从自己的github克隆这样才有权限推送修改4.发送一个 pull request 看作者是否接受你的修改
参考文档