Git常用命令

用了段时间svn回来发觉git的命令不怎么记得了。还是需要记录下来。

创建Git

  1. 空目录下clone远程库
$ git clone https://github.com/JillZsy/Flutter-jsDemo.git
  1. 本地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提交

  1. 添加修改
//添加目录下所有文件
$ git add .
//添加某个文件
$ git add README.md
  1. 查看当前仓库状态
$ git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached ..." to unstage)
    new file:   README.md
    ...
  1. 文件对比
//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.
  1. 提交到本地仓库
$ git commit -m "log"
  1. 推送到远程仓库
$ git push origin master

Git分支

分支的管理详见Git管理策略

  1. 查看分支
$ git branch
* master           //*为当前分支

//查看远程分支
$ git branch -a
* master
  remotes/origin/master
  1. 创建切换分支
$ git branch newBranch             //创建
$ git checkout newBranch         //切换
                ||
$ git checkout -b newBranch    //创建+切换
---------------------------------------------------
$ git branch
* newBranch                    //*为当前分支
master          
  1. 合并分支
$ git checkout master  //切换到master
$ git merge newBranch  //newBranch合并到master
  • 分支合并冲突的时候手动解决冲突,<<<<<<< ,=======,>>>>>>>标记冲突。修改完成后再提交
$ git add .
$ git commit -m "conflict fixed"
  1. 删除分支
//本地
$ git branch -d newBranch
//远程
$ git push origin -d newBranch

标签

  1. 创建标签
//对当前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
  1. 查看标签
$ git tag
  1. 推送标签
//推送单个
$ git push origin v1.0
//推送全部尚未推送过的tag
$ git push origin --tags
  1. 删除标签
  • 删除本地标签
$ 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删除。

你可能感兴趣的:(Git常用命令)