用了段时间svn回来发觉git的命令不怎么记得了。还是需要记录下来。
创建Git
- 空目录下clone远程库
$ git clone https://github.com/JillZsy/Flutter-jsDemo.git
- 本地init后连接到远程库
//本地工程目录下
$ git init
$ git remote add origin https://github.com/JillZsy/Flutter-jsDemo.git
//远程更新到本地
$ git pull origin master
$ git add .
$ git commit -m "new Project"
//本地首次推送master分支所有内容
$ git push -u origin master
//强制提交(不建议使用)
$ git push -u origin master -f
创建时遇到了一些问题。
Git提交
- 添加修改
//添加目录下所有文件
$ git add .
//添加某个文件
$ git add README.md
- 查看当前仓库状态
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: README.md
...
- 文件对比
//add之后commit之前,查看暂存区与工作区里文件的区别
//add之前,即暂存区没有,效果与下面命令行相同
$ git diff README.md
//commit之后,查看工作区和版本库里面最新版本的区别
$ git diff HEAD -- README.md
- 不同分支(以
master
&dev
为例)
//两分支有差异的文件列表
$ git diff master dev --stat
README.md | 2 ++
1 file changed, 2 insertions(+)
//两分支某文件的详细差异
$ git diff master dev README.md
diff --git a/README.md b/README.md
index ad3b263..9e47db9 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# jzdemo
+tee
+
A new Flutter project.
//两分支所有文件的详细差异--由于只有一个文件改动,结果与上面相同
$ git diff master dev
diff --git a/README.md b/README.md
index ad3b263..9e47db9 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# jzdemo
+tee
+
A new Flutter project.
- 提交到本地仓库
$ git commit -m "log"
- 推送到远程仓库
$ git push origin master
Git分支
分支的管理详见Git管理策略
- 查看分支
$ git branch
* master //*为当前分支
//查看远程分支
$ git branch -a
* master
remotes/origin/master
- 创建切换分支
$ git branch newBranch //创建
$ git checkout newBranch //切换
||
$ git checkout -b newBranch //创建+切换
---------------------------------------------------
$ git branch
* newBranch //*为当前分支
master
- 合并分支
$ git checkout master //切换到master
$ git merge newBranch //newBranch合并到master
- 分支合并冲突的时候手动解决冲突,
<<<<<<<
,=======
,>>>>>>>
标记冲突。修改完成后再提交
$ git add .
$ git commit -m "conflict fixed"
- 删除分支
//本地
$ git branch -d newBranch
//远程
$ git push origin -d newBranch
标签
- 创建标签
//对当前commit
$ git tag v1.0
//对某个commit
$ git log --graph --pretty=oneline --abbrev-commit
* 3e32c20 (HEAD -> master, dev) dev readme modify
* c3b3ef8 new Project
$ git tag v1.0 c3b3ef8 //在new Project时候为1.0版本
创建带有说明的标签,用-a
指定标签名,-m
指定说明文字
$ git tag -a v1.0 -m "version 1.0 released" c3b3ef8
- 查看标签
$ git tag
- 推送标签
//推送单个
$ git push origin v1.0
//推送全部尚未推送过的tag
$ git push origin --tags
- 删除标签
- 删除本地标签
$ git tag -d v1.0
- 删除远程标签
$ git tag -d v1.0 //先删除本地标签
$ git push origin :refs/tags/v1.0 //推送一个空tag到远程tag
||
$ git push origin -d tag v1.0 //删除远程tag
回退恢复
1.文件
-
add
之前,暂存区回退到工作区
$ git checkout -- README.md
-
add
之后commit
之前,版本库回退到工作区
//版本库回退到暂存区
$ git reset HEAD README.md
//暂存区回退到工作区
$ git checkout -- README.md
2.版本
当前版本:HEAD
,上一个版本:HEAD^
,上上个版本:HEAD^^
,往上n个版本:HEAD~n
//回退到上一版本
$ git reset --hard HEAD^
//回退到某一版本
$ git reset --hard
回退后时隔多天发觉把不需要这些修改,又想恢复到原来的版本。查找原来版本的commitId
$ git reflog //用来记录每一次命令
删除Git
//本地仓库目录下
$ find . -name ".git" | xargs rm -Rf
//远程
$ rm -rf https://github.com/JillZsy/Flutter-jsDemo.git
本地残留的.git文件手动删除,github上的到对应库Settings->Delete this repository删除。