1.pull code
git clone $repo_url
or update code cloned
set git command alias(disposable):
git config --global alias.up 'pull --rebase --autostash'
update codee:
git up
2.create local feature branch
first update code of main branch code:
git checkout master; git up
create new branch from main branch:
git checkout -b $branch_name
3.modify local code
4.submit local code
change user info(disposable):
git config user.name "YourName"; git config user.email yourname@cryptape.com
add modified file:
git add $file_name
add submit message:
git commit -am "changes"
suggest use GUI tool, for example SourceTree、GitX
5.push local branch to remote
push local branch to remote:
git push --set-upstream origin $branch_name
associate local branch and remote branch:
git branch --set-upstream-to=origin/$branch_name $branch_name
6.create a pull request
- create PR
- check branch info,input related message
7.check code
tell reviewers,please review
according to opinions of reviewers,modify code
submit modified code,depending on the situation, keep only the meaningful commit(use git revert和git push -f cover modification of PR)
8.merge code
- PR can be merged only after CI automated tests pass
9.delete local branch
- git branch -d $branch_name
how to update local code
After merge the PR, look at the results of your PR page. When you see the prompt “xx commits behind develop. Sync now.”, It means that your branch has not merged the latest updates. You should use git rebase to update your changes. Branching to avoid code obsolescence and code conflicts. Proceed as follows:
1.update local code base
1 | 1. `git checkout master` |
1 | First, rewinding head to replay your work on top of it... |
2.update local branch(use rebase,keep your commits in your branch coherent and clear)
1 | 1. `git checkout master` |
how to roll back a local commit:
1 | # Git undo last commit |
note:This step is dangerous. It will cancel the last local commit. Please pay attention to this operation.
how to modify the last commit:
execute git amend command in local branch(use SourceTree as an example):
how to checkout a remote branch to local:
git checkout -b $branch_name origin/$branch_name;
how to undo local changes and overwrite PR branch content:
- git reset –soft HEAD^
- git commit local-modification
- git push -f force to overwrite remote feature branch, keep consistent with local(Remember, the push operation is used to synchronize your local and remote. When your local content is not ready, there is no need to sync remote content)
how to do conflict resolution
- strongly recommend using opendiff for comparison
git config --global merge.tool opendiff
- resolve conflict:
git mergetool # will automatically use opendiff to compare the remote and local, after confirming the changes, use cmd + q to quit editing
Note
refer GitHub Flow guide
master branch is required to be deployable, so PRs that fail CI tests cannot be merged
branch names need to be concise, clear and understandable
code submission description information, PR description information, both need to be written in English
**git push -f**
** It is a dangerous operation. This operation is not allowed on the main branch (such as master, develop). Only the feature branch that is not merged into the main branch is allowed.**master branch must be added to protected branches to avoid misoperation by novices