git快速起步¶
备注
本文以实用为主,介绍如何将远程仓库下载到本,创建开发分支,提交远程仓库以及合并等简单操作,目的是辅助完成开发。所以不深究细节和原理,仅完成日常80%操作为主。
快速初始化¶
git config --global core.editor "vim"
git config --global color.ui auto
git config --global user.name <your_name>
git config --global user.email <your_email>
配置提交用户¶
在提交软件仓库前需要先配置提交人账号,配置分为全局 global
和针对某个特定仓库的 local
。一般常用提交人账号配置为 global
,而少量仓库则配置 local
配置全局账号:
git config --global user.email "your_email@example.com" git config --global user.name "your_email"
对于我的个人项目,我按照项目目录进行配置:
cd cloud-atlas git config --local user.email "huataihuang@xxx.xx" git config --local user.name "huataihuang"
配置git终端色彩¶
git提供了支持终端的色彩显示,用以下命令开启:
git config --global color.ui auto
获取远程版本¶
从远程主机clone出一个版本库:
git clone git@github.com:huataihuang/cloud-atlas.git
如果远程服务器版本有了更新,将远程更新更新取回本地(例如origin主机的master分支):
git fetch origin master
检查所有分支(包括本地和远程):
git branch -a
分支¶
切换分支:
git checkout XXX
如果想在当前分支上创建一个本地分支进行开发(通常我们会在
master
分支上创建本地开发分支):git checkout -b new_fix_XXX
然后将本地分支推送到远程服务器,方便后续不断同步开发:
# 修改,并 git commit,然后执行 git push origin new_fix_XXX --force
注意:本地分支名字必须和远程分支名字相同,例如,这里分支名字是 new_fix_XXX
回滚¶
如果还没有git add缓存代码树¶
有时候本地修改文件还没有执行过 git add
添加到缓存,此时只需要重新 checkout
代码仓储中指定文件回来覆盖掉本地文件就行:
git checkout -- filepathname
注意,中间一定要有 --
否则就会checkout分支了
如果要放弃掉所有没有加入缓存区( git add
命令 )修改:
git checkout .
注意,刚新建的文件还没有加入git的管理系统,对于git是未知的,需要手工删除
如果还没有提交到远程库的回滚¶
如果还没有提交到远程代码库,放弃修改的方法如下:
先查看有哪些
commit
git log
例如:
commit d5c92f618314fb2f8759cfc77e167de3986c3548
...
commit 559770899a4e5bd8314a0ea196f433f3103dadbf
...
这里假设 d5c92f618314fb2f8759cfc77e167de3986c3548
是commit但是尚未push,准备回滚到上一个版本 559770899a4e5bd8314a0ea196f433f3103dadbf
回滚:
git reset --hard 559770899a4e5bd8314a0ea196f433f3103dadbf
然后再次检查:
git log
放弃修改并更新远程分支¶
本地代码回滚到上一版本(或者指定版本):
git reset --hard HEAD~1
加入
-f
参数,强制提交,远程端将强制跟新到reset版本:# git push -f origin master git push -f
合并分支¶
将hotfix分支合并到当前分支中:
git merge hoxfix
备注
如果出现合并冲突,则采用 git合并冲突修复
删除分支¶
删除分支hotfix,
-d
选项只能删除被当前分支所合并过的分支,要强制删除没有被合并过的分支,使用参数-D
git branch -d hotfix
查看分支间的不同¶
比较当前分支和
branchName
分支之间的不同:git diff branchName
查看两个分支间的差异:
git diff branch1 branch2
比较两个分支的指定文件差异:
git diff mybranch master -- myfile.cs
也可以使用:
git diff mybranch..master -- myfile.cs
比较两个分支的文件:
git diff <branchA>:<fileA> <branchB>:<fileB>