https://www.cnblogs.com/best/p/7474442.htmlhttps://gitee.com/progit/1. 拉取远程分支到本地分支将远程主机的最新内容拉到本地git fetch origin本例子是拉取远程分支BBB到本地新分支AAA并切换到本地分支AAA。git checkout-b AAA origin/BBB这时候就会切换到本地分支AAA这时拉取的代码并不是远程分支BBB的最新代码还需要pull一下。前提在本地AAA分支git pull--rebase如果希望在本地创建BBB分支并联系到远程BBB分支。前提本地没有BBB分支git checkout--track BBB从远程分支 checkout 出来的本地分支称为_跟踪分支(tracking branch)_。跟踪分支是一种和远程分支有直接联系的本地分支。在跟踪分支里输入git pushGit 会自行推断应该向哪个服务器的哪个分支推送数据。反过来在这些分支里运行git pull 会获取所有远程索引并把它们的数据都合并到本地分支中来。$ git pull --rebasegit pull的默认行为是git fetch git mergegit pull --rebase则是git fetch git rebase.$ git fetch从远程获取最新版本到本地不会自动合并分支$ git rebasegit rebase顾名思义就是重新定义re起点base的作用即重新定义分支的版本库状态。$ git pull --rebasegit pull --rebase执行过程中会将本地当前分支里的每个提交(commit)取消掉然后把将本地当前分支更新为最新的origin分支来源https://www.cnblogs.com/chenjunjie12321/p/6876220.html在本地已有的分支中拉取远程分支BBB的代码前提已进入到本地需要拉取的分支中git pull origin BBB--rebase2. 切换和查看分支查看本地分支,其中带有“*”的是当前分支git branch查看本地和远程所有分支git branch-a切换本地分支切换到本地分支BBBgit checkout BBB查看远程分支git branch-r3. 提交本地分支代码到远程分支分支过多时并不会全部显示使用回车是查看下一个分支使用q表示退出。查看本地需要提交的代码git status红色的文件就是要提交的代码将文件提交暂存区可以将.替换为具体的文件路径和名称git add.将文件提交到本地库git commit-m需要填写的信息如果是多人开发需要进行git pull--rebase查看是否有冲突git status提交本地分支代码到远程分支AAA是本地分支BBB是远程分支git push origin AAA:BBB4. 放弃本地修改的代码分为三种情况未使用 git add 缓存代码时放弃本地某个文件的代码时git checkout--filepathname放弃本地所有代码注意下边的.git checkout.使用git add缓存代码未使用git commit放弃某一个文件git reset HEAD filename放弃所有文件注意下边的.git reset HEAD.已经用 git commit 提交了代码还没有push。git reset HEAD~同时放弃本地修改过的文件和 git add 过的文件#放弃全部git checkout HEAD.#或者放弃某个文件git checkout HEAD file5. 忽略某些文件不提交https://blog.csdn.net/vichie2008/article/details/45577971https://jingyan.baidu.com/article/29697b9106e552ab21de3c78.html解决.gitignore无法忽略的文件以及自身被忽略的方法gitupdate-index--assume-unchanged PATH/FILE恢复被忽略的文件gitupdate-index--no-assume-unchanged PATH/FILE6.查看本地分支跟踪的远程分支git branch-vv7.解决git pull --rebase时文件冲突[1]. 默认使用 git pull --rebase 拉取代码git config--global--add pull.rebase true[2]. 可能使用到的命令git rebase --abort 会放弃合并回到rebase操作之前的状态之前的提交的不会丢弃git rebase --skip 则会将引起冲突的commits丢弃掉慎用git rebase --continue 合并冲突结合git add 文件命令一起用与修复冲突提示开发者一步一步地有没有解决冲突。[3]. 少量冲突的解决步骤使用git pull --rebase后会拉取远程代码如果远程文件与本地文件有冲突分支名会出现REBASE 1/1(feature/teaching-referm)》(feature/teaching-referm|REBASE 1/1)使用git status 查看文件状态可以看到“未合并的文件”找到使用编辑器打开冲突文件根据需要进行删除代码其中的HEAD和和也要删除 HEAD 当前git所在分支的代码 要合并分支的代码 39645e0443a07957dae修改完冲突文件使用如下命令分支名从(feature/teaching-referm|REBASE 1/1)变为(feature/teaching-referm)注意使用git add . 有时候并不能将修改后的文件进行添加需要 git add 具体文件路径和名称。git add.解决完冲突并合并到分支上git rebase--continue冲突解决完成可以进行将代码提交到远程等操作[4]. 次分支和主分支合并冲突在次分支中拉去主分支的代码git pull 主分支名--rebase根据上边[1]和[2]解决冲突并提交如果提交不上需要强制提交git push--force-with-lease origin 本地分支:远程分支8.拉取代码前将修改的代码存储在一个分支上存储的代码可以在另一个分支上使用。存储已修改的代码git stash拉取远程代码git pull--rebase回复原来修改的代码git stash pop#等同于下边两个动作#git stash apply#git stash drop查看存储列表git stash list如果村里列表有3个已经存储的代码需要 现在需要使用第二个存储的代码git stash apply stash{1}取消存储在进行了一些其他的修改后又要取消之前所应用储藏的修改。git stash show-p stash{0}|git apply-R9. 基于某个分支新建一个分支获取远程库中最新的数据git fetch创建分支方式一基于远程分支BBB创建自己的分支AAA成功后会自动切换到AAA分支git checkout-b AAA origin/BBB方式二 以本地分支BBB为基础创建分支AAAgit checkout BBB#切换到本地的BBB分支git checkout-b AAA#创建并切换到AAA写好代码后可以推送自己的分支AAA到远程库git push origin AAA:AAA10.删除远程分支git push origin--delete[branch_name]11. 更安全的强推代码到远程仓库将本地分支AAA的代码强制推送到远程分支AAA上git push--force-with-lease origin AAA:AAA12. 删除远程分支的某个文件删除远程分支的文件或文件夹https://blog.csdn.net/sunbinkang/article/details/104901064在本地找到要删除的远程分支的文件将其放置到其他地方如果本地也不需要则直接删除将本次删除暂存区的改动提交git commit-mxxx提交到远程分支git push origin 本地分支名:远程分支名13. 分支拉取错误造成冲突当需要拉取A分支却拉成了B分支可以使用以下方法回退。会放弃合并回到rebase操作之前的状态之前的提交的不会丢弃git rebase--abort重新拉取代码git pull origin 远程分支名--rebase14.合并两个分支分支hotfix是基于master创建的分支在hotfix修改完相应的BUG后需要合并到master分支切换到master上git checkout master将hotfix合并到master上git merge hotfix如果分支hotfix需要master在创建hotfix分支之后更新的内容可以直接在hotfix分支上进行mergegit merge master15. 查看自己的git操作引用日志信息只存在于本地——这是一个记录你在你自己的仓库里做过什么的日志。查看引用信息git reflog查看第五次具体做了什么git show HEAD{5}16. 将文件从暂存区中移除只从git仓库中移除文件使git不再跟踪文件gitrm--cached[fileName]17. 查看远程仓库信息查看所有的远程仓库(运行结果中只有一个远程仓库origin)git remote看某个远程仓库的详细信息git remote show[remote-name]分支feature/fixbug是基于develop创建的 (git checkout -b feature/fixbug origin/develop)分支feature/fixbug推从到远程的feature/fixbug(git push origin feature/fixbug:feature/fixbug)18. 回退到上一次git 操作回退到上一次git 操作git reset--hard HEAD^回退到某一次操作先使用git log查看找到某一个commit生成的SHA-1,然后使用命令git reset--hard SHA-1的值19. git 忽略 eslint 的校验git commit--no-verify-mcommit20. 统计git 提交记录统计提交行数、删除行数–all 参数表示所有分支如果不加则是当前分支git log--author你的提交账号--since开始日期--until结束日期--all--prettytformat:--numstat|gawk{ add $1 ; subs $2 ; loc $1 - $2 } END { printf 增加的行数:%s 删除的行数:%s 总行数: %s\n,add,subs,loc }统计提交次数–all 参数表示所有分支如果不加则是当前分支git rev-list--author你的提交账号--since开始日期--until结束日期--all--count HEAD21. 让某个分支追平另一个分支的记录问题描述当我在分支A提交了一个记录然后将记录cherry-pick到分支B。然后需要在分支A上进行一个小改动这时如果在提交一个记录就显得不合适所以我使用git reset HEAD~将提交记录回退到未commit 状态。当我还原某个文件的修改时再次cherry-pick 到分支B时还原的改动并不会在B分支上B分支的该文件还是修改过的这时候就会有两个分支不一致的情况。注意A 分支和 B分支的代码在很久之前就不一样合并之后仍然希望不一样这个命令不适合这种情况可以使用如下命令–reset 会丢弃当前工作区未提交的改动,执行前确保git status干净。git checkout B# 站到要被改的分支上gitread-tree--reset-u A# 内容对齐到 A 分支HEAD 仍留在 B 分支git commit-mchore: 同步 B 与 A 保持一致# 生成一个同步提交git push origin B# 普通推送校验两个分支是否一致gitdiff--quiet test A B一致||echo有差异