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修改的代码,又改回去了。也就是:创建文件->删除文件,新增代码->删除代码,删除代码->新增代码 。进行逆操作

 但是HEAD版本及提交记录将会继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
 
所以坏处:   1. 因为HEAD也是往前走的,所以提交记录比较乱 既有 3 的提交 记录,也有3 的revert 记录 
      2. 因为提交记录是向前走的,当前分支还是会保留之前合并的记录,git 判断有相同的 commitHash,就忽略了相关 commit 修改的内容。 这时就需要 revert 掉之前 revert 的合并提交。
   
  

git rebase  用于将一个分支上的提交应用到另一个分支上。它的主要作用是重新应用某个分支上的所有提交,以便将其与另一个分支合并。这通常用于将本地更改与远程分支同步,或合并多个分支以创建一个干净的提交历史。

 下次再说

posted @ 2022-03-03 09:37  风不  阅读(35)  评论(0编辑  收藏  举报