@946898963
2021-06-30T10:06:46.000000Z
字数 2559
阅读 618
Git
Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)
工作区>>>>暂存区>>>>仓库
git branch -a 查看所有的分支(包括远程分支)
git branch -d 本地分支名字 可以删除本地分支
git branch -D 本地分支名字 可以强制删除本地分支(如果分支含有某些未合并到其他分支的提交的话)
本地分支重命名(还没有推送到远程)
git branch -m oldName newName
远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)
重命名远程分支对应的本地分支
git branch -m oldName newName
删除远程分支
git push --delete origin oldName
上传新命名的本地分支
git push origin newName
把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName
git push origin --delete 远程分支的名字 删除远程分支
git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库,
git diff 查看工作区和暂存区差异,
git diff --cached 查看暂存区和仓库差异,
git diff HEAD 查看工作区和仓库的差异,
git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区,
当执行 git checkout . 或者 git checkout -- 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
git commit的反向命令git reset HEAD,对于未提交的但已经添加到暂存区的内容来说,就是把暂存区的内容从暂存区移出来,但不会影响工作区。
git reset HEAD --file;清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何改变
如果没有已经添加到暂存区的内容,那么会回退版本库中的内容。
git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地
如果只想取回特定分支的更新,可以指定分支名:
git fetch <远程主机名> <分支名> //注意之间有空格
最常见的命令如取回origin 主机的master 分支:
git fetch origin master
取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:
git log -p FETCH_HEAD
开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master
当master代码改动了,需要更新开发分支(dev)上的代码
git checkout master
git pull
git checkout dev
git merge master
git push -u origin dev
而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
前面提到,git pull 的过程可以理解为:
git fetch origin master //从远程主机的master分支拉取最新内容
git merge FETCH_HEAD //将拉取下来的最新内容合并到当前所在的分支中
即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:
git pull <远程主机名> <远程分支名>:<本地分支名>
如果远程分支是与当前分支合并,则冒号后面的部分可以省略:
git pull origin next
Git更新远程分支列表,这里要注意下,如果你的remote branch不是在origin下,按你得把origin换成你的名字。
git remote update origin --prune
查看远程分支
git remote
查看远程分支的详细的信息
git remote -v
保存当前工作进度,会把暂存区和工作区的改动保存起来。
git stash
git stash save 'message...'可以添加一些注释
显示保存进度的列表,也就意味着,git stash命令可以多次执行。
git stash list
恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop
通过git stash pop命令恢复进度后,会删除当前进度
恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
git stash pop --index
恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
git stash pop stash@{1}
除了不删除恢复的进度之外,其余和git stash pop 命令一样
git stash apply [–index] [stash_id]
删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。
git stash drop [stash_id]
删除所有存储的进度。
git stash clear
列出已有的标签
git tag
创建标签