GTI常用命令


一、仓库初始化

git init # 当前路径也是工作区 git -bare init

二、跟踪和提交操作

git add               # 将文件跟踪起来,加入到暂存区中
git commit            # 将暂存区提交本地版本库
git commit -a         # 将本地工作区中的被修改文件(已跟踪状态的)都提交到本地版本库中(当然是先添加到暂存区,后提交本地版本库中)

三、分支操作

1.增删查

git branch                      # 查看本地分支
git branch new_branch           # 新建本地分支
git checkout dev                # 切换分支到dev
git checkout -b mywork master # 基于master分支,新建分支并切换到分支mywork git branch -d dev # 删除那些被当前分支合并的分支 git branch -D dev # 强制删除分支

2.改(分支合并)

git merge dev                  # 合并dev分支到当前所在分支 
git commit -a                  # 解决冲突后,提交

四、查看历史操作

git log 文件名                # 查看commit的历史记录
git log --pretty=oneline # 只显示版本号和提交信息
# git log 无法查看被回退的commit信息
git reflog  # 查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
git show # 查看某次commit的修改内容

五、比较操作

git diff            # 比较文件在暂存区和工作区的差异
git diff --cached   # 比较文件在暂存区和本地仓库的差异
git diff HEAD       # 比较文件在工作区和本地仓库的差异

$ git diff
diff --git a/test.txt b/test.txt
index 753ad01..d9eff2d 100644
--- a/test.txt
+++ b/test.txt
@@ -1,3 +1,4 @@
123123
isdfsd
sdfds
+sdfds

第一行:diff --git a/test.txt b/test.txt ,git diff实质上用的是diff的文本比较工具,其中a/test.txt代表源文件,也就是修改前的文件, b/test.txt代表比目标文件,也就是修改后的文件;
第二行:index 753ad01..d9eff2d 100644 , index后面两个字符串表示两个文件的hash值,最后的数字是文件的权限和属性(?);
第三四行:---代表源文件,+++代表目标文件;
第五行:差异小结,@@ -1,3 +1,4 @@ ,分为两个部分,第一个是-1,3,-表示源文件,1,3表示从第一行开始的三行,后面的+1,4,则表示目标文件的第一行开始的四行内容。差异小结可能会有多个。

剩下的行都是具体的差异信息,其中以空格开头的行代表源文件与目标文件没有差异,以-开头 的行代表在源文件的基础上删除,以+开头代表在源文件基础上添加;

六、版本回退

1.总命令

git reset [--soft | --mixed | --hard] [HEAD]
--mixed  为默认,可以不用带该参数。用于重置暂存区,和上一次的提交保持一致。

2.暂存区回退

git reset                  # 默认回退暂存区
git reset HEAD^            # 回退所有内容到上一个版本
git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本 
git reset 052e             # 回退到指定版本

3.软回退(只去掉log中的commit信息,不回退文件版本)

git reset --soft           # 用于回退到某个版本
git reset --soft HEAD~3    # 回退上上上一个版本

4.硬回退(回退文件版本)

git reset --hard           # 将暂存区与工作区都回到上一次版本,并删除之前的所有信息
git reset --hard HEAD      # 重置工作区和暂存区到 本地版本库的当前版本

七、远程仓库相关操作

git remote -v                                              # 查看远程仓库信息
git remote add origin 远程仓库链接.git(注意后面要+.git)    # 连接远程仓库
git push -u origin master                                  # 推送本地仓库到远程仓库,首次提交需要使用完整命令

git pull -u origin master                         # 拉取远程仓库到本地仓库
                                                  # 包含了两个操作
git fetch -u origin master   分解命令1             # 第一个操作是拉取origin上的master分支到本地分支上
git merge origin/master      分解命令2             # 第二个操作是合并origin的master分支到本地分支上,如有冲突得手工解决

八、文件状态查看

git status -s      # 简易查看文件状态信息
            # 输出标记会有两列,第一列是对staging区域而言,第二列是对working目录而言。都是以本地版本库为参考

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
# (use "git push" to publish your local commits)
#
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# new file: test.txt
#
# Changes not staged for commit:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: test.txt
#
$ git status -s
AM test.txt

九、查看GIT配置参数

git config -l
Git