首页 » flutter » 正文

git学习

一、代码提交之前的pull及冲突解决

还没有commit:

  1. 通过git stash save "save message" 将自己写的东西存起来。
  2. 通过git pull --rebase 拉取代码并将自己放在最新,rebase和merge的区别可以另外了解下。
  3. 通过git stash pop或者 git stash apply将保存的恢复,其中pop是直接删掉这个stash,apply是不删,可以通过git stash list查看stash的列表。
  4. 将冲突处理。
  5. 执行git commit -m "commit message" 进行commit,然后push到远程仓库。

本地代码已经commit:

  1. 通过git pull --rebase 拉取代码并将自己放在最新。
  2. 有冲突的话处理冲突,冲突处理后执行git add,不需要commit,然后执行git rebase --continue使rebase继续。
  3. 这个时候是已commit的本地仓库分支,可以直接push到远程。

二、git reset重置到指定的Commit

  1. git reset --mixed:回到指定的commit,当前与回退的版本的差异全部放在work_tree中。
  2. git reset --soft:回到指定的版本,work_tree不变,中间的commit的变化加入到暂存区中。
  3. git reset --hard:直接回到指定的版本,中间的全部擦除掉。

三、git cherry-pick

详细的可以看这篇博客

四、跟踪远程分支

  1. 查看本地与远程的映射关系:git branch -vv
  2. 在本地新建分支x,并自动切换到该本地分支x:git checkout -b 本地分支名x 远程仓库名/远程分支名x
  3. 在本地创建分支,不切换到新建的分支:git branch 本地分支 远程仓库/远程分支
  4. 设置已有分支的跟踪关系:git branch -u origin/remote_branch_name local_branch_name
  5. 撤销对远程分支的跟踪:git branch --unset-upstream

五、子模块

  1. 添加子模块:git submodule add git地址
  2. 如果项目的模块中已经有了子模块,那么先git submodule init 然后进行更新 git submodule update
  3. 进入相应的子模块的目录下,那么git就是在子模块的仓库了,可以通过git branchgit log等查看子模块的相关信息。
  4. 在项目使用的过程中,中间佳阔更改了子模块,但是在旧的子模块基础上进行了commit,这个时候我进行子模块的更新,怎么也不行,最终是通过checkout到远程的分支,在该分支上进行子模块更新到最新版本;因为子模块是所有分支通用的,也就正常的更新了。
赞 (0)

发表评论