[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
- 介绍
- 1. Get Git - 安装并且设置Git
- 2. Repository - 建立一个本地的repository
- 3. Commit to it - 检查状态、新增或修改commits
- 4. GitHubbin - 注册GitHub帐号
- 5. Remote Control - 将repository做本地和远程的连接
- 6. Forks and Clones - Fork和clone一个开源的计划
- 7. Branches aren't just for Birds - 建立一个feature branch
- Git分支开发模型
- 8. It's a Small World - 邀请并和别人合作
- 9. Pull, Never Out of Date - 利用Push和pull来和GitHub.com同步
- 10. Requesting You Pull Please - 建立一个pull request
- 11. Merge Tada - Merge和删除branches
- 学会 GitHub
- GitHub 使用指南
- git 与 github 模板配置
- GitHub Actions
- 实用技巧
- Git Flow
- Submodule子模块
- 工作记录
- 常用命令
- 帮助
- 资源
- 解疑答惑