Git不仅仅是可以用来备份代码,可以管理你的文档文件。不仅仅可以非要用来和远程仓库对应起来,只在本地建立git仓库,同样有助于包含自己文件的版本。
准备工作
配置用户名和邮箱
上面这样设置的是全局的用户角色,其配置文件写在~/.gitconfig里面。
如果你既用github,又用公司的git,就不可以设置global的账户名和邮箱了,不加global,在repro之内配置,就可以把用户配置保存在repro的.ssh/config文件中。
生成和配置ssh key
git的client-server链接过程支持https和ssh两种方式,而后者无需你每次输入账户和密码,所以方便一点。它的配置和ssh链接的信任关系配置的配置一模一样。
然后将生成的~/.ssh/github.pub公钥添加到github主页的配置中去。
如果要登录不同的git站点,自然需要配置多个key,这时需要添加~/.ssh/config来保存不同的key对应不同的站点。
在本地创建项目
如果是一个自己创建一个新项目,在本地目录初始化
如果是将远程的项目下载到本地,
基本工作流程
下面是一般的工作流程。
切换分支
写完或者修改完代码,把有变动的文件加入到临时提交区
将临时提交区的变动提交到本地仓库
拉取远程最新版本,和本地的最新改动merge
这里推荐rebase方式的pull,这样尽可能的减少merge change的出现。
将本地仓库提交到远程仓库去
只有这一步才会对服务器仓库有所改动。
常用的需求
显示commit的历史记录
显示某个commit的具体修改内容
查看当前本地的状态
创建一个新分支
这时本地的文件不会有变化,只是本地文件所对应的分支名变了。修改完代码再push到远程新分支就可以在远程创建新的分支。
修改最近的commit的变动
已经提交过一次本地的commit,还没push到远程,又有改动的地方,想更新这一次commit。
修改了代码,想恢复回去
修改了代码,还没有commit,想恢复回之前的未修改版本。(修改的部分不想要了)
已经commit,想撤销回去
已经commit到本地仓库,但还没有push到远程仓库,想撤销这一次本地的commit。(修改的地方还要)
已经commit到本地仓库,但还没有push到远程仓库,想撤销这一次本地的commit。(修改的地方不要了)
将本地代码同步到某一次commit时的版本
手工给代码打tag(需要权限才可以)
rank全量代码,dev分支
git pull --rebase
git tag -a 201808241124rank -m 'manual as no staging' 1a23cd62fb9a8618f06674092e0a8d1405a7272d
git push origin 201808241124rank
删除一个submodule
https://gist.github.com/myusuf3/7f645819ded92bda6677
寻找迭代更新最频繁的10个文件
git log --format='' --name-only | sort | uniq -c | sort -rn | head -n 10