配置本地的用户和邮箱
git config --local user.name "username"
git config --local user.email username@mail.com
切换分支
git checkout dev
创建并切换分支
git checkout -b private_branch
显示版本库 .git 所在位置
git rev-parse --git-dir
可以在 .git/hooks 目录下编辑钩子脚本,可以在某些 git 命令执行时运行钩子,脚本名字是固定的比如
applypatch-msg
pre-applypatch
post-applypatch
pre-commit
prepare-commit-msg
commit-msg
post-commit
pre-rebase
post-checkout
post-merge
pre-receive
update
post-receive
post-update
pre-auto-gc
post-rewrite
添加修改文件
git add filename
commit 修改
git commit -m "commit-message"
覆盖上一个 commit
git commit --amend -m "commit-message"
提交
git push origin HEAD:refs/for/dev
获取最新代码
git fetch origin dev
git rebase origin/dev
查看日志
git log
撤销当前 commit 回退到某个版本
git reset --mixed fd3164b68d1cc2c0cf9d8e44a52c8dece0500432
将 dev 的某个修改 merge 到 master
git checkout master
git cherry-pick 38361a68 ## commit id
如果遇到 fatal: bad object,可能是因为 master 没有 dev 的数据,要先执行
git fetch dev 或者 git fetch --all
如果 rebase 操作遇到冲突
# 1. 查看冲突的文件
git status
# 2. 修改文件解决冲突
# 3. 添加已解决的文件
git add filename
# 4. 重新 commit
git commit -c
通过创建 private branch 多人开发 dev
# 1. 创建分支(分支名字可以任意)
git checkout dev
git checkout -b sandbox/username/project
# 2. 修改,commit
# 3. 提交
git push origin sandbox/username/project
# 4. 其他人可以拉这个 branch,修改,提交
git fetch --all
git branch -a
git checkout -b sandbox/username/project origin/sandbox/username/project
git commit
git push origin sandbox/username/project
# 5. 将这个 private branch 统一提交到 dev
git checkout dev
git fetch --all
git branch -a
git merge --squash origin/sandbox/username/project
git commit
git push origin HEAD:refs/for/dev