ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] https://trello.com/ # 分支操作 ``` git branch -vv # 查看本地分支 git branch -a # 查看远程分支,会用红色表示出来(如果你开了颜色支持的话) git checkout -b feature/dev1 origin/dev # 新建并切换本地分支 dev1,并 checkout 以及跟踪远程分支dev 分支 git branch -d branch-name # 删除本地分支 git branch -r -d origin/branch-name # Deleted remote-tracking branch origin/branch-name (was 61d9e0d) git push origin --delete branch_name # 删除远程分支 git branch -m branch-name new-branch-name # 重命名本地分支 ``` 如果远程新建了一个分支,本地没有该分支: ``` git checkout --track origin/branch_name ``` 这时本地会新建一个分支名叫 `branch_name` ,会自动跟踪远程的同名分支 `branch_name`。 如果本地新建了一个分支 branch_name,但是在远程没有,这时候 push 和 pull 指令就无法确定该跟踪谁,一般来说我们都会使其跟踪远程同名分支,所以可以利用: ~~~ git push --set-upstream origin branch_name ~~~ 这样就可以自动在远程创建一个 `branch_name` 分支,然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步。 合并分支到 master 上 ~~~ git checkout master git pull origin master # pull 远程 master 上的代码 git merge dev # 合并 dev 分支的代码到 master ~~~ 然后查看状态 ~~~ git status ~~~ > [git本地分支与远程分支关联与解除关联](https://www.jianshu.com/p/526eb3eec83e) ## 避免合并时产生冲突问题 开发中经常会遇到这种使用场景 版本发布的代码在`dev_6.0`上,但是个人开发分支在`feature_6.0`上。 * 需求1 开发完成后,需要将`feature_6.0`合并到`dev_6.0`上。 * 需求2 开发完成后,同样的情况也需要将`feature_6.0`合并到`dev_6.0`上。 问题在于需求开发的过程中,合作小伙伴也同样会有很多代码合并到 `feature_6.0`。这种情况下,合并之前,`dev_6.0`就会比你自己的 `feature_6.0`多出很多提交。 为了保持两个分支同步,避免合并时产生冲突问题: 我们需要在合并前,将`dev_6.0`的代码同步到 `feature_6.0`,保持两个分支都是最新的,然后将`feature_6.0` merge 到 `dev_6.0`,这样就不会有冲突了。 ``` # === dev_6.0 的代码同步到 feature_6.0 === git checkout dev_6.0 git pull --rebase origin dev_6.0 #拉取 dev_6.0 最新的代码 git checkout feature_6.0 #切换到 feature_6.0 git rebase dev_6.0 #同步 dev_6.0 的代码到 feature_6.0 # === 将开发的代码 merge 到 dev_6.0上 === git checkout dev_6.0 #切换分支到 dev_6.0 git merge feature_6.0 #合并 feature_6.0到 dev_6.0 ``` # 恢复被删除文件 (2)对于要撤销的文件,你已经有了commit的记录了。 则先:`git reset HEAD XXX_file`让该文件回到工作区的状态。 然后:`git chekcout -- XXX_file`即可 # git pull 放弃本地修改, 全部使用远端代码 ``` # git强制覆盖: git fetch --all git reset --hard origin/master git pull ## git 强制覆盖本地命令(单条执行): git fetch --all && git reset --hard origin/master && git pull ``` 第一个是:拉取所有更新,不同步; 第二个是:本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);`git reset`指令把`HEAD`指向`master`最新版本 第三个是:再更新一次(其实也可以不用,第二步命令做过了其实) > [Gitflow实践](https://blog.csdn.net/sweetvvck/article/details/50245147) # 如何为一个项目贡献代码 参考:https://github.com/keepassxreboot/keepassxc/blob/develop/.github/CONTRIBUTING.md # 保持你的 fork 项目处于最新 [Keeping your fork up to date](https://garrytrinder.github.io/2020/03/keeping-your-fork-up-to-date) # 参考 > https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424 [Git本地分支和远程分支关联](https://www.cnblogs.com/chechen/p/9950798.html) [Git Flow精简模型](http://blog.gejiawen.com/2016/12/12/git-flow-compact-model/) http://www.360doc.com/content/16/0920/16/1073512_592297709.shtml