框架的约束应该是一种规则(rules),而不是注意事项(caveats),做好这个区分就知道框架应该做什么,不应该做什么了。
git fectch 只是将文件放到git数据库中,看不到。
git checkout FETCH_HEAD 迁出到工作目录中
git chekout --help:查看对应命令帮助信息
git log MEGER_HEAD
git log FETCH_HEAD
//回到上一个提交
git reset --hard HEAD~
git stash 暂存修改过的代码,未提交前pull代码的操作
git stash pop :pull代码后提出暂存的代码
git checkout :切换分支
git status: 查看当前状态(包括当前分支等)
git log:
git reflog:生成的head
git reset --hard HEAD :线上代码一致,丢弃本地修改
git reset --hard HEAD@{1} 回滚到该节点
//改文件与最新库文件保持一致
git checkout HEAD – src/cn//guild/biz/management/armygroup/ArmyGroupListFragment.java
//解决冲突保持丢弃本地修改
git checkout --ours – src/cn//guild/biz/management/armygroup/ArmyGroupListFragment.java
git pull – rebase origin/patch_1.2.2 :git pull --rebase
git branch:
git tag:
git log --oneline
git add .//添加修改的文件
git commit -a #保存修改的状态
git commit -m “comment”
git commit --amend""
git push
tag—》branch //git 拉取tag代码 需要从tag中建立一个分支才行
git checkout fetch #无需切换工作目录拉取所有的git信息
//基于tag拉取分支
$ git checkout release_v1.3.0_1407082001 -b v1.3.0
- 从master拉出1.2.0封版分支
git checkout master
git checkout -b freeze_1.2.0 - 基于version_freeze_xxx的最新commit打一个1.2.0发布包代码的tag
git checkout freeze_1.2.0
git tag -a release_v1.2.0_1405221950 -m ‘kk_v1.2.0_android_release_b1405221950.WD_5.apk’ - 确保当前master分支的代码是最新的,同时把version_freeze_1.2.0分支上所有的commit合并回master分支,再删除version_freeze_1.2.0分支
git checkout master # 切换到master分支
git pull --rebase origin master # 拉取最新代码
git merge freeze_1.2.0 # 合并freeze_1.2.0分支的所有提交
git branch -d freeze_1.2.0 # 删除本地的freeze_1.2.0分支
git push origin :freeze_1.2.0 # 删除远程的freeze_1.2.0分支git - 把新加的tag提交到远程服务器
git push --tags - git push origin [branch_name]
export LANG=“en_US”
//
git cherry-pick “commitId”
//合并分支
git cherry -v v2.1.0_LiveVoiceChat master:diff两个分支代码
git merge v2.1.0
加了 v2.1.0_LiveVoiceChat 分支,上面的命令输出前面带 + 号的表示没有 pick 到 v2.1.0_LiveVoiceChat 分支上的。-代表已经pick过了
解决冲突 后
git add .
git cherry-pick --continue
解决冲突后执行git命令顺序
git add .
git rebase --continue
ctrl+r:命令搜索
提交部分代码
<1>先 git reset head 暂存区代码
<2>再git add 需要提交的代码
<3>再git commit -m “XXX”
修改前一次 commit :
git commit --amend
查看 当前的commit 是否提交到 push 有不一样就说明还没有push 到origin
git diff origin/feature_branch_1 feature_branch_1
查看分支作者
git for-each-ref --format=’%(committerdate) %09 %(authorname) %09 %(refname)’ | sort -k5n -k2M -k3n -k4n
快捷键
ctrl+r搜索 ctrl+a 行头, ctrl+e 行末
sh -o igncr sw
通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作:
$ git push origin v0.1.2 # 将v0.1.2标签提交到git服务器
$ git push origin –tags # 将本地所有标签一次性提交到git服务器
创建轻量标签
$ git tag v0.1.2-light
git tag -l
创建附注标签
git tag -a v0.1.2 -m “0.1.2版本”
dos2unix …*.sh:windowns下执行脚本回车换行符影响脚本运行定位问题
//统计代码总行数
git log --pretty=tformat: --numstat
| gawk ‘{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf “added lines: %s removed lines : %s total lines: %s\n”,add,subs,loc }’ -
git log --author=“tangsj”
//拆分git pull,防止rebase 操作
git fetch
git merge --no-ff origin/branch_X
git rm -r -n --cached [app/build] :-n 加上这个参数,执行命令时,只是展示要删除的文件列表预览
git rm -r --cached [app/build]: 执行命令 从git 中移除[]内的文件/夹
删除分支
git branch -r -d origin/branch-name
git push origin :branch-name
编辑git配置
git config -e