2.1 基础操作命令

2.1.1 创建仓库

  • git init

    1. 创建当前目录为本地仓库

    2. 执行命令后,会在对应的仓库中创建.git目录,这个目录是git用来跟踪版本库的,最好不要修改内部文件,不然容易出现问题

    3. Linux环境下,可能无法查看到这个目录,因为这个目录是隐藏的,可以使用ls -ah来查看

2.1.2 查看文件变更

  • git status

    1. (用于显示工作目录和暂存区的状态)

    2. 查看仓库当前状态,哪个文件被修改了

  • git diff <file>

    1. (显示提交和工作树等之间的更改)

    2. 查看文件具体修改了什么内容

    3. 不指定<file>,可以查看全部变化

2.1.3 提交新文件

  • git add <path>

    1. (命令将文件内容添加到索引(将修改添加到暂存区))

    2. <path>可以指定文件名,表示只添加这个文件

    3. <path>如果用.,则表示所有内容

2.1.4 查看历史操作记录

  • git log <--pretty=oneline>

    1. (显示提交日志信息)

    2. 展示信息中:最近一次append GPL、上一次add distributed、最早一次wrote a readme file

    3. <--pretty=oneline>参数用于只显示提交版本号的信息

    4. git log --graph:可以查看到分支合并图

2.1.5 版本回退

  • git reset <--hard> <HEAD>

    1. (命令用于将当前HEAD重置到指定状态。一般用于撤消之前的一些操作 相当于ctrl +z)

    2. --hard HEAD^ 回滚到最近一次提交 相当于版本HEAD的切换(本地仓库)

    3. --hard HEAD~3回滚三次提交 ,并删除后三次删除

    4. <HEAD>也可以替换成历史记录中对应的版本号

2.1.6 查看历史操作命令

  • git reflog

    1. 查看用户的历史git操作命令

2.1.7 提交代码到存储库

  • git commit

    1. (将更改记录(提交)到存储库)

    2. 使用前提该文件已经被git add

    3. git commit -m '描述信息'添加描述

    4. 修改后再次提交可以简写成git commit -am '描述信息'

2.1.8 撤销修改 或 切换分支

  • git checkout

    1. 切换分支或恢复工作树文件

    2. 删除了某个文件且没有git commit提交,可以使用git checkout -- files进行恢复

    3. 如果执行了git checkout -b <name>,则是创建并切换到对应的分支

2.1.9 从版本库中删除文件

  • git rm <file>

    1. 从工作区和索引中删除文件

    2. 使用 git rm 来删除文件,同时还会将这个删除操作记录下来;而使用 rm 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除

    3. 等同于手动删除文件,然后使用git add <file>

2.1.10 管理一组跟踪的存储库

  • git remote <本地仓库分支> <远程仓库分支>

    1. git remote不带参数,列出已经存在的远程分支

    2. git remote -v | --verbose 列出详细信息,在每一个名字后面列出其远程url

    3. 添加远程库git remote add <库名字> <url>

    4. 模仿 git clone,但只跟踪选定的分支git remote add -f -t master -m master origin git://example.com/git.git/

    5. 解除本地库与远程库的跟踪:git remote rm origin

2.1.11 本地库所有内容推送到远程库

  • git push

    1. 用于将本地分支的更新,推送到远程主机.

    2. 创建远程分支git push <通常为origin> <本地分支名>:<远程分支名>

    3. 删除远程分支:

      1. git push origin :master把空的推到远程去就相当于删除远程的分支了

      2. git push origin --delete master删除远程master分支

    4. 如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。

      git push origin
    5. 不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项

      git push --all origin
    6. 如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。

      git push --force origin
    7. git push不会推送标签(tag),除非使用–tags选项。git push origin --tags`

    8. 将当前分支推送到远程的同名的简单方法,如下

      git push origin HEAD

2.1.12 从远程库克隆到本地

  • git clone

    1. git clone <版本库的网址> <本地目录名>从远程主机克隆一个版本库

2.1.13 分支管理

  • git branch <name>

    1. git branch列出本地仓库的分支

    2. git branch -r查看远程分支

    3. git branch -a查看本地和远程分支(远程分支基本为origin/dev这种类型)

    4. git branch <name>创建一个name 的分支(也可以使用2.8.1中的命令,直接创建并切换分支)

    5. git branch -m <name> <changName> 给分支改名字

    6. git branch -d [branchname]删除本地已合并的分支

    7. git branch -D [branchName]强制删除分支

    8. git branch -vv看本地分支关联(跟踪)的远程分支之间的对应关系

    9. 查看当前远程仓库信息 git remote -vv

    10. git手动建立关系git branch --track xx origin/newbranch本地xx和远程dev 建立关系(本地没有的分支)

    11. git branch --set-upstream-to=origin/<branch> branchName 设置本地分支追踪远程分支

2.1.14 合并分支

  • git merge

    1. 将两个或两个以上的开发历史加入(合并)一起。

    2. 要将A分支合并到B分支,在B分支环境下,执行git merge A即可

    3. git merge --no-ff -m "merge with no-ff" <name>:禁用Fast forward并合并,表示此次合并要创建一个新的commit(描述2中,A被删除了,B分支上依旧可以查出合并的记录)

2.1.15 切换分支

  • git switch

    1. 防止与撤销修改混淆,这个专用切换分支

    2. git switch -c <name>:创建并切换到名为<name>的分支

    3. git switch <name>:切换到名为<name>的分支

2.1.16 临时储藏(方便修复紧急Bug,不影响现有修改)

  • git stash

    1. 将更改储藏在脏工作目录中

    2. 此时操作会和上一次操作有冲突但是不想丢弃本次操作可以保存至脏读目录中

    3. git stash list:列出所有储藏的修改

    4. git stash show:进行检查

    5. git stash apply:恢复(可能在不同的提交之上)

    6. 调用没有任何参数的git stash相当于git stash save

    7. git stash drop:删除临时储存

    8. git stash pop:恢复并删除临时储存

2.1.17 复制特定提交到当前分支(临时修改bug后,防止分支冲突)

  • git cherry-pick

    1. 快速复制合并分支

    2. 线上环境临时修改bug,修改合并到开发分支上:在开发分支环境下,执行命令`git cherry-pick 提交码`

2.1.18 将远端仓库与本地仓库合并

  • git pull

    1. (从另一个存储库或本地分支获取并集成(整合))

    2. git pull <远程主机名> <远程分支名>:<本地分支名>下载远程主机的分支到本地分支如果没有新建本地分支

    3. 如果远程分支想合并当前分支合并git pull origin <远程分支名>相当于git fetch origin+git merge origin/分支名

    4. 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名git pull origin

    5. 如果合并需要采用rebase模式,可以使用–rebase选项。git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

    6. git fetchgit pull的区别

      1. git fetch:相当于是从远程获取最新版本到本地,不会自动合并。

         $ git fetch origin master
         $ git log -p master..origin/master
         $ git merge origin/master
      2. 以上命令的含义:

        1. 首先从远程的originmaster主分支下载最新的版本到origin/master分支上

        2. 然后比较本地的master分支和origin/master分支的差别

        3. 最后进行合并

      3. git pull:相当于是从远程获取最新版本并merge到本地

        1. git pull origin master

        2. git fetchgit merge

2.1.19 把一个分支的修改合并到当前分支

  • git rebase

    1. 另一个分支基础之上重新应用,用于把一个分支的修改合并到当前分支

    2. 相当于merge 但是更明显 是一串 比较清晰

    3. git rebase <branch1> <branch2>

    4. rebase操作可以把本地未push的分叉提交历史整理成直线;

    5. rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

2.1.20 打标签

  • git tag

    1. git tag 列出现有的标签

    2. 创建轻量级标签git tag <name>

    3. 创建指定提交位置的标签git tag <name> <commit id>

    4. git tag -a <name> -m '描述' -a 指定标签名字,-m指定描述

    5. git show展示版本信息

    6. git tag -d <name>删除标签

    7. 打完标签推到远程git push origin [tagname]

    8. 一次性推送本地所以标签git push origin --tags

    9. 从远程库删除git push origin :refs/tags/<name>

2.1.21 显示各种类的对象

  • git show <name>

2.1.22 移动或重命名文件

  • git mv

2.1.23 从另一个存储库下载对象和引用

  • git fetch

    1. 从另一个存储库下载对象和引用。(取回)

    2. git fetch <远程主机名>将某个远程主机的更新

    3. 更新所有分支git fetch

2.1.24 汇总git日志输出

  • git shortlog

    统计人员的commit:git shortlog -s -n

2.1.25 显示离当前提交最近的标签

  • git describe

Last updated

Was this helpful?