工作中很多同学已经会使用 Git 了,然而对各个概念比较模糊,这里主要理清 Git 中的各个概念,更好的理解 Git。如果你还不知道如何使用 Git,可以参考 @廖雪峰 廖雪峰 的文章。我也是一名 Git 菜鸟,看完 @画渣程序猿mmoaay 写的 Git 教程后,自己利用业余时间从头学习了 Git。更多内容可以参考 官网 。
使用 Git 时,我们完全可以利用 Git 命令行来完成我们的工作,但是通常情况下使用Git工具比较方便。比如:SoureTree。但是有时候不得不使用命令行,所以还是踏踏实实学习一下 Git 命令吧,当然详细的命令可以参考官方文档。
- $ mkdir lefeGit
- $ cd lefeGit
- $ git init
lefeGit 相当于一个仓库(repository)也称为我们的工作区,这里的文件将被 git 管理。
- $ touch lefe.js // 创建一个 lefe.js 文件
- $ git add lefe.js // 把 lefe.js 文件修改的内容提交到暂存区
- $ git add * // 把当前工作区所以修改过的内容一次提交到暂存区
- $ vi lefe.js // 编辑 lefe.js 文件
- $ git add * // 把 lefe.js 文件修改的内容提交到暂存区
- $ git commit - m 'add lefe' // 把当前修改的内容提交到当前分支,初始化git
- 的时候,会默认创建一个master分支, - m后是提交时的备注
- $ git log
- commit a7fcde1af5f78af8e44290f3951bb159a9bbcac0 (HEAD -> master)
- Author: wangsuyan
- Date: Thu Nov 2 16:23:35 2017 +0800
- add lefe
- $ git log --pretty=oneline
- a7fcde1af5f78af8e44290f3951bb159a9bbcac0 (HEAD -> master) add lefe
- $ git checkout lefe.js // 撤销还没有提交到暂存区的更改,这是被修改的内容还在工作区中
- $ git reset HEAD lefe.js // 撤销修改的文件到暂存区
- $ git checkout lefe.js // 撤销对 lefe.js 文件的修改
- $ git reset --hard HEAD^
- HEAD is now at a7fcde1 add lefe
- $ git status
- On branch master
- Changes not staged for commit:
- (use "git add
- ..." to update what will be committed)
- (use "git checkout --
- ..." to discard changes in working directory)
- modified: lefe.js
- no changes added to commit (use "git add" and/or "git commit -a")
- $ git diff
- diff --git a/lefe.js b/lefe.js
- index b245919..8999741 100644
- --- a/lefe.js
- +++ b/lefe.js
- @@ -1 +1,2 @@
- Hello lefe
- +wsy
- $ git clone git@github.com: lefex / wsyLefe.git
- // 当你本地创建一个仓库后,需要提交到远程仓库时,就需要把本地仓库和远程仓库进行关联,这样就可以把本地的代码提交到远程仓库了,orgin 为远程仓库的名字,可以自定义
- $ git remote add orgin git@github.com:lefex/gitLearn.git
- // 查看所关联的远程仓库
- $ git remote -v
- orgin git@github.com:lefex/wsyLefe.git (fetch)
- orgin git@github.com:lefex/wsyLefe.git (push)
- // 如果本地已经关联了远程仓库,需要删除后重新关联,当然也可以同时关联多个远程仓库
- $ git remote rm origin
- // 由于第一次提交,远程仓库是空的,需要把远程master仓库和本地的master仓库关联起来,以后可以直接使用 git push 来提交代码
- $ git push -u orgin master
- $ git checkout - b dev $ git branch hot // 创建 hot 分支
- $ git checkout hot // 切换到 hot 分支
- $ git branch // 查看所有分支
- $ git merge hot // 合并 hot 分支到当前分支
- $ git branch - d hot // 删除 hot 分支
- Hello lefe
- <<<<<<< HEAD
- wsy add master
- =======
- add dev
- >>>>>>> dev
- // 给当前提交的代码打一个名字为 v0.1 的 tag,默认是打在最新一次提交的位置
- $ git tag v0.1
- // 查看所有的 tag
- $ git tag
- v0.1
- v0.2
- // 查看提交记录
- $ git log --pretty=oneline --abbrev-commit
- 48cd742 (HEAD -> master, tag: v0.2, tag: v0.1, orgin/master) chang lefe.js remot
- 8c2fd8e create lefe.js file
- // 某一次提交版本后,忘记了打 tag,可以使用这个命令给某一次提交打 tag
- $ git tag v0.01 8c2fd8e
- // 提交tag的备注信息 -a:标签名 -m:备注信息
- $ git tag -a v0.3 -m '0.3 version release'
- // 删除标签
- $ git tag -d v0.2
- Deleted tag 'v0.2' (was 48cd742)
- // 把某个 tag 提交给远程仓库
- $ git push orgin v0.1
- // 提交所有的 tag 到远程仓库
- $ git push orgin --tags
- // push 这个tag不小心打错了,并提交到了远程仓库,需要删除,先删除本地,在从远程仓库删除
- $ git tag -d push
- $ git push orgin :refs/tags/push
- $ git show v0.01
- commit 8c2fd8ecec2f65f58ac1a531203ce520a78229d3 (tag: v0.01)
- Author: wangsuyan
- Date: Fri Nov 3 11:21:31 2017 +0800
- create lefe.js file
- diff --git a/lefe.js b/lefe.js
- new file mode 100644
- index 0000000..37b455a
- --- /dev/null
- +++ b/lefe.js
- @@ -0,0 +1 @@
- +Hello lefe
Git Flow
简单介绍
Gitflow 是一个非常成功的分支模型,它主要分为2个(master, develop)主要的分支和3个(feature, release, hotfix)辅助分支。SourceTree 已经集成了它。它主要有以下几个分支组成:
安装参考 这里
- $ git flow release finish '0.1.0'
- Switched to branch 'master'
- Deleted branch release/0.1.0 (was c4958ec).
- Summary of actions:
- - Latest objects have been fetched from 'origin'
- - Release branch has been merged into 'master'
- - The release was tagged '0.1.0'
- - Release branch has been back-merged into 'develop'
- - Release branch 'release/0.1.0' has been deleted
- $ git flow hotfix finish 'bugFix'
- Summary of actions:
- - Latest objects have been fetched from 'origin'
- - Hotfix branch has been merged into 'master'
- - The hotfix was tagged 'bugFix'
- - Hotfix branch has been back-merged into 'develop'
- - Hotfix branch 'hotfix/bugFix' has been deleted
注意 使用 Gitflow 并不会把代码自动提交到远程仓库,需要自己收到提交。远程仓库只有master 和 develop 分支,feature,release 和 hotfix 分支并不提交到远程仓库,仅本地自己使用。
来源: http://www.tuicool.com/articles/vYjuAvm