git config --global user.name "" git config --global user.email "" git help config mkdir mysite cd mysite git init(初始化版本控制) git add index.html(让git来跟踪它,提交到暂存区) git add *.html 进入目录,使用tugit,create add git commit -m ""(跟踪好的文件提交到版本库中) git commit -am "" git log git status(查看文件状态) git基本概念: index/staging erea:暂存区 work area:工作区 修改暂存的文件:git status有两个状态,第一个提示在暂存区,没有提交,第二个提示,没有提交到暂存区 git add命令作用: 1.可以让git开始跟踪文件并且提交到暂存区 2.已跟踪的文件放到缓存区 3.还能用于合并时把有冲突的文件标记为已解决状态 git原理:每次保存某一时刻文件夹下的所有文件的快照,svn保存文件差异 git分支:本质上仅仅是个指向commit对象的可变指针 git branch testing,创建分支testing,testing现在指向了最新的版本,现在切换到testing分支工作,testing分支指向的最新的快照,master指向的还是原来的。svn分支是通过复制文件的形式,git分支通过指针实现。 git保存了一个head的指针,指向了当前正在工作的分支 git branch显示分支信息 git checkout testing git checkout -b iss53创建切换 分支上修改的内容没有提交时git不允许切换,如果需要不提交时切换,可通过stash 在master分支上合并分支,合并分支,将指针移动(fast-forward)或者寻找共同的祖先自动合并(auto merging) git merge hotfix git branch -d hotfix:删除分支hotfix 合并分支冲突:两个分支有相同的文件,相同文件的同一个位置,有不同的内容,合并就会产生冲突 git merge iss53后,修改冲突地方,然后git add index.html,git commit -m "分支冲突已经解决" git stash分支工作到一半,不想提交,又要切换到别的分支上工作,使用git stash git stash list 查看隐藏状态的列表 git stash apply 储藏的名字:回到原来的分支之后 git服务器:多人协同开发。有bitbucket.org(私有仓库免费) github.com 协议就是一套规则 git服务器支持多种协议,git协议最快 ssh-keygen -t rsa -C "tengseng@163.com" 生成公钥和私钥 公钥相当于锁,私钥相当于钥匙,这个锁只有这把钥匙能打开 连接gitbub,将公钥放在github上 ssh git@github.com 测试连接 乌龟git使用专用的私有key,可以使用自动转换工具生成 克隆远程仓库 git clone 仓库URL:默认情况下自动创建了本地的master分支用于跟踪远程仓库中的master分支,打开项目文件夹.gitconfig文件可以看到master分支和远程仓库master分支的关联 远程分支可以理解为在远程仓库上文件快照的指针,其实和本地分支是一样的,不过这些分支是在远程仓库上,远程分支名用(远程仓库名/分支名)形式表示 git remote -v 查看远程仓库 git branch -vv查看本地分支与远程分支的联系 git branch -r 查看远程分支 git push -u [remote-name] [本地推送的分支名] git push -u [remote-name] [本地推送的分支名:远程分支名] git push -u git@github.com:peihongpeng/testHTML.git master git push -u origin master origin在config文件中配置的 git push -u [远程仓库名romote-name] -all 推送本地仓库的所有分支到远程仓库上 git fetch 远程仓库名 从远程仓库获取数据,对没有对工作区产生任何影响. 不是以本地分支存在,而是保存在.git/refs/heads之外(.git/refs/remotes/origin)的远程分支。 git merge 远程仓库名/分支名 把获取到的数据合并 git merge origin/master 合并冲突后需要人工解决,打开文件,修改 git pull相当于git fetch git merge 模拟多人操作:在多个文件夹下模拟 本地仓库与远程仓库连接:git remote add origin git@github.com:peihongpeng/html02.git git push -u origin master 搭建git服务器 权限:远程的主分支上的代码只能由管理员合并修改,不影响普通用户自己的本地分支 发送合并请求 先合并到develop分支,测试通过后合并到master分支