https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%AE%80%E4%BB%8B
git学习最全网址
git常用命令one:
-
git init(创建仓库)
-
git status(查看仓库的状态)
- git diff 文件名 (这次相较上次修改了哪些内容)未在暂存区的改动,暂存区中的看不出来
- ls 查看文件目录
- cd zhuzhu 进入zhuzhu文件
- pwd 显示当前文件路径
- git add 文件名 (将添加的文件放到暂存区中) git reset HEAD <文件名>可以撤销add
- git commit (将栈存区内容提交到代码区中)
- git clone git地址(将远程仓库的代码克隆到本地)
- git branch 查看当前分支
- git branch -vv(两个v),就能够看到本地分支跟踪的远程分支。
- git checkout 切换分支
- git rm 删除
- git merge 将指定分支合并到当前分支
- 删除本地和远程分支 git branch -a 查看所有分支情况,
git branch -d <branchname> 删掉本地分支,
git push origin --delete <branchname> 删除远程分支 - git config --global credential.helper store 操作pull、push 时候免密码
git常用命令two:
- git checkout -b 'zz' 在当前分支下创建zz分支,并指向zz分支(相当于git branch+git checkout)
- git branch -d 'bb' 删除bb分支
- git stash 将现在分支底下的代码压在堆栈中,用git stash apply释放出来(会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。比如下面的中间状态,通过
git stash
命令推送一个新的储藏,当前的工作目录就) - git stash list 查看压在堆栈中的都有哪些
- git stash apply stash@{#} 可以将你指定版本号为stash@{#}的工作内容取出来,继续编缉之前没有提交的文件。当前的index.html显示红色 代表没有添加到暂存区内,也可以理解为是没有提交的文件。同时也可以使用 git stash pop来恢复所有没有放到git栈中的未提交的文件。
- git stash drop -q stash@{2} 删除指定编号为2的stash内容
- git stash clear 将栈清空
- git log 查看已经提交的
- git log -p -2 查看近两次提交的
- git remote -v 查看远程仓库以及对应的url
- git remote add <shortname> <url> 添加一个新的git远程仓库
- git tag 打标签 git show 可查看打标签具体
- git log --oneline --decorate 查看各个分支指向的对象
- git branch -v 查看所有分支的最后一次提交
- git push origin zhuzhu:zhuzhu 创建一个远程zhuzhu分支( 先在本地创一个zhuzhu分支)
- git push origin --delete zhuzhu 删除远程zhuzhu分支
git常见工作区:
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
fetch和pull的区别:
1.git pull = git fetch + git merge
git pull会将本地库更新至远程库的最新状态 由于本地库进行了更新,HEAD也会相应的指向最新的commit id
2.git fetch的时候只是将remote的origin进行update 但是并没有在local的branch进行merge
rebase和merge的区别:
1、区别是 rebase 一个两个分支 就各位了一个分支,test合并前所有的 patch也就是commit 消失了而merge 则还是两个分支,只不过在merge后这个点交汇
2、rebase 和 merge的另一个区别是rebase 的冲突是一个一个解决,如果有十个冲突,先解决第一个,然后用命令
git add -u
git rebase --continue
继续后才会出现第二个冲突,直到所有冲突解决完,而merge 是所有的冲突都会显示出来。
另外如果rebase过程中,你想中途退出,恢复rebase前的代码则可以用命令 git rebase --abort
所以rebase的工作流就是
git rebase
while(存在冲突) {
git status
找到当前冲突文件,编辑解决冲突
git add -u
git rebase --continue
if( git rebase --abort )
break;
}
最后冲突全部解决,rebase成功!!