git branch branch_name 创建分支
git branch 查看本地分支
git branch -a 查看本地和远程分支
git checkout branch_name 切换分支
git checkout – file_name 撤销修改
git checkout -b 新建并切换到此分支
git merge branch_name 合并指定分支到当前分支
git branch -d branch_name 删除本地分支
30分钟教你轻松使用Git做代码管理
git rebaseGit分支管理技巧-使用rebase让你的分支笔直生长
Rebase
廖雪峰的git教程
Git 基础 - 撤消操作
git reset是从暂存区到工作区的撤销
git checkout是从本地版本库到工作区的撤销
Git 基础 - 远程仓库的使用
从远程仓库拉取到本地:
git clone
git fetch + git merge或git pull
git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
推送到远程仓库:
git push < remote > < branch >
git push origin master
只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 不然的话要先git pull合并之后使得远程仓库的最新commit id是本地的父系commid id。
如果当前分支跟踪了远程仓库的某个分支则直接git pull后可默认推到到跟踪的分支。
git clone复制远程仓库的所有文件及其提交历史(commit id),会在当前目录新建一个目录(目录名默认为url的最后一个目录名或者自定义目录名),目录有一个隐藏目录.git,除了这个.git外的这个目录下所有文件都是工作区的内容。也就是git clone之后工作区有远程仓库的所有内容;
git fetch是将远程仓库最新内容拉取到本地版本库,实质上是改变FETCH_HEAD,.git目录下有一个FETCH_HEAD的文件,每一行指向某个远程分支的最新提交。git fetch后需要git merge后才会出现在工作区;
git pull等同于git fetch和git merge直接将远程仓库的内容拉取到本地工作区,不过前提是要先合并,自动合并不了的话需要手动合并冲突,过程是:git satsh、git pull、 git stash pop、 git diff。(.git里除了stage/index和local repository外还有一个stash栈区)
git clone、git pull和git fetch的用法和区别
untracked:工作区新建的文件,本地仓库没有记录,没add
unstaged(changes not staged for committed):工作区修改过的内容没add
changes to be committed:add进暂存区的文件没有commit
暂存区的文件可以git commit提交到本地仓库或者git reset HEAD < file >让文件变成unstaged状态。
本地工作区的文件可以git push到远程仓库或者git checkout – < file >将版本库中的文件检出到工作区discard changes(放弃修改)



