git入门及拓展

干货!很久没有来写文章了,这次总结了一下工作中常用的 git 命令和使用方法,适合初学者学习!


  1. 初始化项目 - git init
  2. 查看状态 - git status
  3. track 新增文件 - git add
  • 文件状态变化:Untracked —> Staged
  • 一次性添加所有未添加文件 - git add .
  • 允许使用 wildcard, e.g. git add js/*.js
  1. Commit 变动的文件(added, modified, deleted) - git commit
  • 除了新添加的文件,其它的(modified, deleted)都可以直接 commit - git commit -a
  • 上面的 commit 动作都会打开一个临时文件 COMMIT_EDITMSG,使用 vim 来编辑 commit 信息
  • 当 commit 信息很少时,可以直接添加单行信息 - git commit -m "Your commit message here"
  1. 查看 log 记录 - git log
  • 更详细的 log 信息 - git log --summary
  1. 将本地仓库添加到远端仓库 - git remote add origin [remote git address here]
  • 其中,origin 为自己给远端起的名字,可以为任意名字,但通常命名为 origin
  • 最后一个 argument 是远端仓库地址
  1. 将本地仓库内容推送到远端仓库 - git push -u origin master
  • 其中,origin 为远端仓库名称,origin 后面的名称是要推送上去的分支名称,此处 master 为主支
  • -u 表示记住这次 push 的 parameters,下次如果要做同样的操作,直接 git push 即可 (所以不加 -u 也是没问题的)
  1. 拉取远端仓库内容(来更新本地内容)- git pull origin master
  • 注意,此时如果有尚未 commit 的本地内容并且会引起 merge conflit,需要先 commit 然后 pull。如果还不想 commit,那么可以先隐藏起来,pull,然后恢复 - git stash(hide) —> git stash apply(show)
  1. 查看现在本地仓库的内容与最近一次 commit 的区别 - git diff
  • 默认情况下 HEAD 指向最近一次 commit,如果 HEAD 指向以前的 commit,则可以用 git diff HEAD
  • 可以使用 git diff --staged 来查看 just staged 的 file
  1. Unstaging file(s) - git reset [fileName]
  2. 重置文件 - git checkout -- [fileName]
  • 这个操作把文件重置到最近一次 commit 的状态,而 reset 只是把文件从 staged 变回了 unstaged,并没有重置
  1. 新建分支 - git branch [branchName]
  • 切换到某个分支 - git checkout [branchName]
  • 新建一个分支并切换到这个分支下(等于同时做了上面两个操作) - git checkout -b [branchName]
  1. 合并分支 - git merge [branchName]
  • 将某分支与当前分支合并,通常是一个新 feature 写好了,然后添加到主分支里
  • 当一个文件被同时修改时,merge conflit 可能会发生
  • 合并后可以将废弃的分支删除 - git branch -d [branchName] 。尚未被 merge 的分支不可以被这样删除,如果一定要删除(比如做了一半的 feature 不想要了),则用git branch -d -f [branchName] or git branch -D [branchName] (强制删除)
  1. 添加子模块
  • 我们经常会遇到一种情况,就是在一个项目目录下,会用到另外一个项目的东西
  • 命令 git submodule add [repository address] 会添加并克隆子项目到当前目录下
  • 更多内容,请看官方文档

git-flow

在 git 的基础上封装并拓展,实现了 Vincent Driessen 的 git branching model

  • github
  • 中文版cheatsheet

总结

以上为 git 的基础用法,实际生产环境中可能还需根据项目的不同有所变动,git-flow 是一个很不错的开发流程,并且简化了许多操作,有兴趣的同学可以去查询参考一下。

蟹蟹!

你可能感兴趣的:(git入门及拓展)