git笔记
1: git checkout master 切换到master分支
2: git pull 【origin 远程分支 (拉取远程分支)】 更新到最新代码
3: git checkout dev 切换到dev分支;加 -d git checkout -d dev【 origin/dev (绑定远程分支)】 在本地创建分支dev并切换到该分支;加-f强制切换分支
4:git push origin dev 推送新分支到远程仓库
5:git fetch origin remote【:dev】 把远程分支拉到本地,同名可以省略【】部分
5:git push -u origin/remote_branch 远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch
6:git branch --set-upstream-to=origin/dev 关联远程仓库
7: git pull 尝试拉取验证
8:git merge master 把本地的主分支合并到现分支
9:git branch -a命令来查看所有的分支。
git branch -r 查看远程分支
git branch 查看本地分支
git branch -D aaaa 强制删除本地分支
git push origin --delete aaaa 删除远程分支
如果您想保留更改,且更换分支,可以先存起来再切再弹出
(1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。不写默认是上次commit信息。
(2)git stash list :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
(8)git stash clear :删除所有缓存的stash
修改上次提交信息 (最近的修改追加到上一次的提交上)两个用处
git commit --amend -m ''
//查看当前仓库地址
git remote -v
//将本地仓库名称"origin"更改为 “old-origin”
git remote rename origin old-origin
//添加新的远程仓库地址
git remote add origin git@192.168.0.99:wangbl/project.git
//修改远程地址
git remote set-url origin http://192.168.100.235:9797/john/git_test.git
丢弃未add的文件更改
git checkout .
git查看某开发者在一段时间内容提交的代码摘要信息
git log --author="zhangphil" --after="2021-01-06 00:00:00" --before="2021-01-06 23:59:59"
git只想push某一次的提交
git cherry-pick commit_id
回退:有两个命令git reset 和 git revert
1. git reset --hard 撤销到某次提交
git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard commit_id 退到/进到 指定commit的代码
要把修改的记录推送到远程,直接推不上。要强推git push origin <branch_name> --force 或者 git push -f origin <branch_name>
比如 1 2 3 4 5 五个提交记录 git reset 3 那么记录里就只剩下 1 2 3 了
好处:思路整洁;不会漏改的问题 如果用的git reset --hard commit_id(这种比较暴力,可以试下其他参数) 这种方式,提交记录也比较干净,相当于4、5不存在 ;
(有点类似于git checkout -b <branch> commit_id ,这个是在当前分支branch在提交记录 3 这个记录拉了一个新的分支)。
适合 4、5改的不多或者没有4 5
坏处:4和5的提交代码没了,需要编写、重新提交(非常麻烦),而且提交记录有点乱,多两次记录
2. git revert 撤销某次提交
git revert commit_id 恢复commit_id记录 。 如果这次的commit是一个merge的话,不能直接这样写。因为revert不知道还原哪个分支,
所以要加参数-m git revert -m 1/2 commit_id 其中 1 就是选择主线还原非主线,2就是选择非主线还原主线。
还是1 2 3 4 5 五个提交记录 git revert 3 那么记录里就只剩下 1 2 4 5 了
好处:只改一个提交记录,不会影响其他commit 。
因为revert的原理是把3修改的代码,又改回去了。也就是:创建文件->删除文件,新增代码->删除代码,删除代码->新增代码 。进行逆操作
git rebase 用于将一个分支上的提交应用到另一个分支上。它的主要作用是重新应用某个分支上的所有提交,以便将其与另一个分支合并。这通常用于将本地更改与远程分支同步,或合并多个分支以创建一个干净的提交历史。
下次再说