Git Tips

Git 的常用命令

  • untracked - 新增的文件,Git 根本不知道它的存在
  • not staged - 被索引过又被修改了的文件
  • staged - 通过 git add 后被即将被提交的文件
  • git reflog
  • 版本回退: git reset –hard versionId
  • 创建分支: git branch branchName
  • 切换分支: git checkout branchName
  • 创建并切换分支: git checkout -b branchName
  • 使用 git fetch 和 git pull 都可以更新远程仓库的代码到本地,但是它们之间还是有区别

    • git fetch: 从远程获取最新的版本到本地的 tmp 分支上,之后再进行比较,决定是否合并

      1
      2
      3
      git fetch origin master # 从远程的 origin 仓库的 master 主分支更新最新的版本到origin/master分支上
      git diff master origin/master # 比较本地的master分支和origin/master分支的差别
      git merge origin/master # 合并内容到本地 master 分支
    • git pull:从远程获取最新版本并 merge 到本地 (git fetch 更安全一些)

      1
      git pull origin master # 相当于 git fetch 和 git merge 的合并





搭建Git服务器

搭建 Git 服务器

初始化仓库用命令 git init --bare sample.git 而不是 git init

使用 Gitolite 搭建 Git 服务器

不需要手动在 git 服务器中添加新用户或新仓库,gitolite 的用户,仓库和权限规则是使用一个名为 gitolite-admin 的特殊仓库进行维护,需通过修改该仓库并合并 push 到服务器中:

  • 创建新仓库只需要修改 gitolite-admin/conf/gitolite.conf,而不是用 git init –bare 命令
  • 添加新用户只需要把用户的 ssl 公钥如 biao.pub 放到 gitolite-admin/keydir,biao 是用户名,在 gitolite.conf 里用到

中文名乱码

例如使用 git status 输出 modified: “template-web-gradle/doc/\344\275\277\347\224\250\350\257\264\346\230\216.md”,中文名的路径显示不正常,调用 git config core.quotepath false 后就可以了.

参考资料