Git是目前非常常见的版本控制工具,按照使用场景来看,主要有以下内容:
add & commit & push
add命令的常见用法有:
git add -u 添加修改的, 忽略untracked.
git add -p 可以交互方式添加文件内容.
git add -A 下边两个都是add所有文件
git add *
如果想从add之后的缓冲区删除文件,则:
git rm —-cached <filename> 将文件从git add之后的缓存区中删除.
使用commit提交修改:
git commit -m'commit content'
如果不小心写错了commit内容, 可用下边命令修改最近一次的提交:
git commit -amend
有时候会遇到使用vim时候git commit —amend不能保存的问题,是因为git未正确配置,如下即可:
git config --global core.editor /usr/bin/vim
使用push将本次修改同步到remote端
git push
git push origin hotfix 第一次push到remote端,则要加上origin。
log
log命令的常见用法有:
git log 查看所有
git log -1 查看最近一次
git log -p 查看细节
git log -20 -p
git log --since="6 hours"
git log --before="2 days”
git log -p --all -- '*'LaunchStopwatchViewController’*’ 查看该文件的所有git记录,可查找已删除的文件记录.
查看历史命令:
git reflog
diff
diff主要用于查看代码差异:
git diff 查看当前目录与暂存区的差异
git diff --cached 查看已add的差异.
git diff <commit_id1> <commit_id2> 显示版本库中两次commit之间的差别
git diff <commit_id1> 查看工作目录树与版本库中某次提交版本/分支/标签之间的差别
reset & checkout
reset可以忽略add 到 cache 里边的文件:
git reset --hard 回溯版本,跟git上保持一致.
git reset HEAD filename 把暂存区的修改撤销,回退到最新版本。
git reset —hard <版本号> 回溯到一个版本.
checkout 通常用于切换分支或从git server上获取最新文件:
git checkout <branchname> 切换分支
git checkout <filename> 从远端git server上获取最新文件
git checkout -p <filename> 交互式方式获取最新文件
branch
branch是版本控制管理非常重要的一个概念:
创建分支
git branch <branchname> 创建分支
git branch <newbranch> <oldbranch> 以某个分支为基础创建新的分支
git branch <branchname> <tagname> 以某个tag为基准创建分支
git checkout <branchname> 切换分支
git branch –d <branchname> 删除分支 如果要强制删除则用-D
git branch –m <oldbranchname> <newbranchname> 分支重命名
合并分支
git checkout master
git merge <branchname> 将branchname分支合并到当前分支(即master)
如果想单独将branch1的commit合并到branch2中呢?可使用遴选功能:
// 如在develop分支下,可将9bd0e5e这个提交合并进来:
git cherry-pick 9bd0e5e
git push 如未冲突即合并完成;遇到冲突要单独解决
tag
关于tag的内容,接下来会再做补充。