理解git机制原理,这样才能更好的使用它。
git四个区域
workspace:工作区,就是平时进行开发改动的地方。
index:暂存区,当执行git add命令后,工作区的文件就会被移动到暂存区。
repository:本地仓库,位于自己的电脑上,通过git commit提交暂存区的内容会进入本地仓库 。
remote,远程仓库,用来托管代码的服务器,远程仓库的内容能够分布在多个地点的处于协作关系的本地仓库修改,本地仓库修改完代码通过git push命令同步代码到远程仓库。
git常见命令
git add:添加文件到暂存区,添加某个文件到暂存区,后面可以跟多个文件,以空格区分。git add xxx xxx ,添加当前更改的所有文件到暂存区git add .。
get commit:提交暂存的更改,会新开编辑器进行编辑。git commit -m "you message" 提交暂存的更改,并记录下备注git commit -am 等于git add . && git commit -m,git commit --amend 对最近的一次提交的信息进行修改,此操作会修改commit的hash值。
git pull 远程主机名,远程分支名:本地分支名 git pull --rebase 使用rebase的模式进行合并。
git fetch 与git pull 不同的是git fetch操作仅仅只会拉取远程的修改,不会自动进行merge操作。对你当前的代码没有影响。
git branch branch-name新建本地分支,但不切换。
git rebase 用于把一个分支的修改合并到当前分支上,会引起冲突,使用git add、git rebase --continue来处理冲突。
git merge 和 git rebase的区别:
两者都是合并分支的操作。
不同于git rebase的是,git merge在不是fast-forward(快速合并)的情况下,会产生一条额外的合并记录,类似Merage branch 'xxx' into 'xxx'的一条提交记录,另外在解决冲突的时候,用merge只需要解决一次冲突即可,简单粗暴。而用rebase的时候,需要依次解决每次的冲突,才可以提交。
git revert:回滚某次的提交,用于撤销某次操作,此操作不会修改原本的提交记录,而是会新增一条提交记录来抵消某次操作。
git revert和git reset的区别:
两者都是回滚提交的操作。
git revert会新建一条commit信息,来撤回之前的修改。
git reset会直接将提交记录退回到指定的commit上。建议使用git revert,这样提交的历史记录不会被抹去,可以安全的进行撤回。
git branch,git checkout xxx,git merge xxx,git branch -d develop
解决git冲突
git拉取仓库、合并分支解决冲突:
1.先使用git stash将本地代码缓存下来,
2.再使用git pull 拉取代码,
3.再git stash pop 还原暂存的代码。冲突可能会自动解决,若没有,则手动解决。
4.使用git status显示哪些文件没有合并,再手动解决,再删掉冲突标识符。
记录记录!