1. 我们知道,git分为工作区,暂存区,本地仓库,远程仓库等几个数据区域;
2. 常用git命令中,echo > file 工作区创建一个文件file
git add file 将文件file移到暂存区
git commit -m 'change001' 将文件file移到本地仓库
git push origin/release 将文件file移到远程仓库
git pull 将文件拉取到本地仓库
3. git rm -cache file 只能对处于暂存区的文件file进行删除
vi file 对文件file进行修改,文件file处于暂存区
git checkout --file 切换分支,文件file位于本地仓库
git reset --hard commitID 代码回滚
git checkout -b 'dev-12' 创建分支
git push origin dev-12
git checkout -D 'dev-12' 删除分支
git push origin dev-12
Git的优势是可以创建不同的branch,然后在每个branch上开发。那么问题是:如果不同的branch之间需要做同步,比如sourceBranch上做的修改也需要同步到targetBranch,改怎么做?
1. 如果一个branch是有远程Git server管理的,另一个branch是自己本地的
cd <your workspace>
git branch //假定现在所在的branch是targetBranch,并最好保证没有未提交的修改,并且已经更新到最新
git checkout -b sourceBranch //创建一个本地的sourceBranch并切换到sourceBranch
git commit //把sourceBranch上做的修改先提交
git checkout targetBranch //切换回targetBranch
git merge --no-ff sourceBranch //把sourceBranch的修改merge到targetBranch。注意:建议merge的时候总是用 --no-ff 选项
git status //保证现在workspace是干净的
git push //push到远程,如果远程有新的修改,先做一下git pull
2. 如果两个branch都是远程管理的,想把branchB的内容同步到branchA上
cd <your workspace>
git branch //假定现在所在的branch是branchA,并最好保证没有未提交的修改,并且已经更新到最新
git checkout sourceBranch //确保同一个workspace能在不同的branch直接切换,即保证 .git/config里 [remote "origin"] 的内容是 fetch = +refs/heads/*:refs/remotes/origin/*
git merge targetBranch
解决conflicts如果merge的结果里有显示conflicts
git commit //解决冲突后先commit到sourceBranch
git checkout targetBranch //切换到targetBranch
git merge --no-ff sourceBranch //建议merge的时候总是用 --no-ff 选项
git push origin targetBranch //把sourceBranch的修改merge到targetBranch之后,push到远程的targetBranch