干货!很久没有来写文章了,这次总结了一下工作中常用的 git 命令和使用方法,适合初学者学习!
- 初始化项目 -
git init
- 查看状态 -
git status
- track 新增文件 -
git add
- 文件状态变化:Untracked —> Staged
- 一次性添加所有未添加文件 -
git add .
- 允许使用 wildcard, e.g.
git add js/*.js
- 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"
- 查看 log 记录 -
git log
- 更详细的 log 信息 -
git log --summary
- 将本地仓库添加到远端仓库 -
git remote add origin [remote git address here]
- 其中,origin 为自己给远端起的名字,可以为任意名字,但通常命名为 origin
- 最后一个 argument 是远端仓库地址
- 将本地仓库内容推送到远端仓库 -
git push -u origin master
- 其中,origin 为远端仓库名称,origin 后面的名称是要推送上去的分支名称,此处 master 为主支
-
-u
表示记住这次 push 的 parameters,下次如果要做同样的操作,直接 git push 即可 (所以不加 -u 也是没问题的)
- 拉取远端仓库内容(来更新本地内容)-
git pull origin master
- 注意,此时如果有尚未 commit 的本地内容并且会引起 merge conflit,需要先 commit 然后 pull。如果还不想 commit,那么可以先隐藏起来,pull,然后恢复 -
git stash(hide)
—>git stash apply(show)
- 查看现在本地仓库的内容与最近一次 commit 的区别 -
git diff
- 默认情况下 HEAD 指向最近一次 commit,如果 HEAD 指向以前的 commit,则可以用
git diff HEAD
- 可以使用
git diff --staged
来查看 just staged 的 file
- Unstaging file(s) -
git reset [fileName]
- 重置文件 -
git checkout -- [fileName]
- 这个操作把文件重置到最近一次 commit 的状态,而 reset 只是把文件从 staged 变回了 unstaged,并没有重置
- 新建分支 -
git branch [branchName]
- 切换到某个分支 -
git checkout [branchName]
- 新建一个分支并切换到这个分支下(等于同时做了上面两个操作) -
git checkout -b [branchName]
- 合并分支 -
git merge [branchName]
- 将某分支与当前分支合并,通常是一个新 feature 写好了,然后添加到主分支里
- 当一个文件被同时修改时,merge conflit 可能会发生
- 合并后可以将废弃的分支删除 -
git branch -d [branchName]
。尚未被 merge 的分支不可以被这样删除,如果一定要删除(比如做了一半的 feature 不想要了),则用git branch -d -f [branchName]
orgit branch -D [branchName]
(强制删除)
- 添加子模块
- 我们经常会遇到一种情况,就是在一个项目目录下,会用到另外一个项目的东西
- 命令
git submodule add [repository address]
会添加并克隆子项目到当前目录下 - 更多内容,请看官方文档
git-flow
在 git 的基础上封装并拓展,实现了 Vincent Driessen 的 git branching model
总结
以上为 git 的基础用法,实际生产环境中可能还需根据项目的不同有所变动,git-flow 是一个很不错的开发流程,并且简化了许多操作,有兴趣的同学可以去查询参考一下。
蟹蟹!