主要是工作中常用的一些git命令和一些场景的使用方式
常见命令
checkout
1 | git checkout -b release-1.7.2 origin/release-1.7.2 # 从远端仓库checkout出release-1.7.2分支 |
commit
1 | git commit --amend # 修改commit信息 |
stash
1 | git stash # 保存工作现场 没有commit的内容 |
push
1 | git push <远程主机名> <本地分支名>:<远程分支名> |
tag
1 | git ls-remote --tags upstream # 查看远端的tag列表 |
rebase
1 | git rebase -i commid # [当前commit,指定commitId) 左开右闭 # 修改commit信息,合并commit, 调整commit顺序,将一个类型的commit合并在一起 |
cherry-pick
1 | git cherry-pick A..B # 合并单个和多个 |
reset
1 | git reset --hard <sha1-commit-id> # 直接删除到这个commitId |
branch
1 | git branch -m <old_name> <new_name> # 重命名 branch 名称 |
log
1 | git log --graph --oneline --decorate # 查看提交历史,https://segmentfault.com/a/1190000008039809 |
常见操作方式
为仓库添加一个源
例如在内部flink仓库添加一个社区的源用以合并代码
1 | git remote add upstream https://github.com/apache/flink.git |
设置新的分支与远程分支的对应关系
1 | git branch --set-upstream-to=origin/dev_1.3.2_minwenjun |
克隆单个分支的代码
常用于review大的MR,单独拉取用户提交的一个分支
1 | git clone [url] -b [branch-name] --single-branch |
cherry-pick merge commit
1 | https://stackoverflow.com/questions/9229301/git-cherry-pick-says-38c74d-is-a-merge-but-no-m-option-was-given |
将当前代码提交到另一个仓库
1 | git remote add origin_repo_b git@server_ip:/path/repo_b.git |
git修改传输协议
修改你本地的ssh remote url. 不用https协议,改用git协议
1 | git remote -v |
参考资料: