远程仓库
当你git clone的时候,就是从远程仓库(origin)克隆了master分支到本地。git remote -v,能够显示当前的远程仓库有哪些.
创建git目录
git init与git init --bare都可以创建,但是区别非常大
git init
创建git文件隐藏目录,同时用户在当前目录下进行git提交,注意一定是有权限登录的用户,远程用户无法提交到master,远程用户只能提交到分支上来
git init --bare
只创建git文件目录,并且是显示的.远程用户都可以提交代码到master上面
关于分支合并
git rebase 和git merge 都能进行分支合并,还是有区别的
git rebase branch_a branch_b 将branch_b的代码合并到branch_a上面来,并在branch_a上进行一次提交。这样是为了让分支图成线性
1. 当有冲突之后,进行修改,然后git rebase --continue
2. 如果要取消rebase, git rebase --abort
切换到主分支上,使用git merge branch_a 则将分支合并到主分支上来,图形上非线性.
cherry-pick 某个hash
将当前的commit与过去的commit进行一次合并,如有冲突,就修改冲突,并生成一次新的提交
git log --oneline --decorate --graph --all
查看分支图
撤销
git revert xxx 撤销某次提交
git reset --soft xx 回滚到某次提交,此次提交修改放在暂存区
git reset --hard xx 回滚到某次提交
git reset head file 将文件从暂存区恢复到本地,但是文件依然处于修改状态
git checkout file 将文件完全恢复到上次提交的状态,那么文件处于无修改状态
文件的状态
local----(add)----->stash----(commit)----git local
非常重要的忽略文件的方法
在项目目录下,建立一个.gitignore文件夹,然后正则匹配要忽略的文件
打标签
- git tag -a "v1.0.0.xxx" -m "提交相关信息"(创建tag)
- git push origin v1.0.0.xxx(提交到远端)
- 删除标签git tag -d v1.xx
查看某个单独分支的情况
- git fetch origin branch
- git checkout branch
git pull会执行两个操作,git fetch 某个分支,然后git merge到默认分支上.