" 设置用户...">
美文网首页
git命令笔记

git命令笔记

作者: TinkTan | 来源:发表于2020-08-17 17:46 被阅读0次

1. 安装Git

git config --global user.name "<用户名>" 设置用户名
git config --global user.email "<邮件地址>" 设置Email

2. 创建版本库

  • git init 初始化git仓库,把当前所在目录变成git可管理的仓库

  • git add <文件名> 把指定的文件添加到仓库,可反复多次使用,添加多个文件。如果要添加目录下所有文件,使用git add . 。提交修改和提交新文件都使用git add。

  • git commit -m "<提交说明>" 提交文件到仓库。-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

3. 时光穿梭机

git status 查看仓库当前的状态

git diff <文件名> 查看指定文件的修改内容

3.1 版本回退

git log 查看从当前版本到最远版本的提交日志,如果回退了版本,回退版本后面的版本提交的日志就看不到了。

git reset --hard HEAD^ 本地代码回退到上一个版本

git reset --hard HEAD~100 本地代码回退到往上第100个版本

git reset --hard [commit_id] 本地代码回退到指定版本,commit id是需要回退到版本的提交标识id。版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

git reflog 查看命令历史。包含每条命令的commit_id、提交命令、提交说明

3.2 撤销修改

git checkout -- <file> 把file文件在工作区的修改全部撤销,有两种情况:

一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

没有--,就变成了“切换到另一个分支”的命令。

git reset HEAD <file> 把暂存区的file文件修改撤销掉(unstage),重新放回工作区。还要再执行git checkout -- <file> 把工作区的修改撤销才撤销修改。

3.3 删除文件

git rm <file> 删除file文件然后提交到暂存区。相当于手动删除file文件然后git add <file>操作,效果一样。

4. 远程仓库

  • git remote add <远程库别名> <远程库地址> 本地仓库关联远程库。适用先有本地库,后有远程库时。

  • git push -u <远程库别名> <需要推送的本地分支名> 第一次推送本地分支的所有内容到远程仓库中,加上-u参数,git不到把内容推送到远程仓库,还把本地分支和远程分支关联起来,以后的推送或拉取就可以简化命令。使用去掉-u的命令推送。

  • git push <远程库别名> <需要推送的本地分支名> 推送本地分支的最新修改到远程仓库中

  • git clone <远程库地址> 克隆远程库到本地

5. 分支管理

5.1 创建与合并分支

  • git branch 查看所有分支,当前分支前面会标一个符号"*"
  • git branch <分支别名> 创建分支
  • git checkout <分支别名> 切换到已有分支
  • git checkout -b <分支别名> 创建+切换分支
  • git switch <分支别名> 切换到已有分支(git新版本新增)
  • git switch -c <分支别名> 创建+切换分支命令(git新版本新增)
  • git merge <分支别名> 合并某分支到当前分支(fast forward模式合并)
  • git branch -d <分支别名> 删除分支

5.2 解决冲突

  • git status 查看仓库当前状态

  • git log 查看commit历史记录,按回车可以往下查看,按Q退出查看

  • git log --graph 查看分支合并图

5.3 分支管理策略

git merger --no-ff -m "commit说明" <分支别名> 禁用Fast forward进行合并分支

两种模式合并分支的区别:

  • 不加--no--ff参数时,fast forward模式下合并,删除分支后,会丢掉分支信息,看不出来曾经做过合并。
  • 加上--no-ff参数时,禁用fast forward模式下合并,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息,能看出来曾经做过合并。

5.4 Bug分支

每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

  • git stash 储藏工作现场,可以储藏多次
  • git stash list 查看工作现场列表
  • git stash apply 恢复工作现场,但工作现场内容并不删除
  • git stash apply <工作现场别名> 当有多次stash时,恢复指定的工作现场(git stash list命令可以查看工作现场别名)
  • git stash drop 删除工作现场
  • git stash pop 恢复工作现场并删除
  • git cherry-pick <commit_id> 把其他分支上的提交修改“复制”到当前分支,commit_id为需要复制的提交的id。

5.5 Feature分支

开发一个新功能,最好新建一个feature分支。在feature分支上面开发,完成后,合并,最后,删除该feature分支。
git branch -D <分支别名> 强行删除分支。(要丢弃一个没有被合并过的分支时,无法使用git branch -d命令删除分支。)

5.6 多人协作

  • git remote 查看所有远程库信息

  • git remote -v 显示详细的所有远程库信息。 上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

  • git push <远程库别名> <需要推送的本地分支名> 推送本地分支的最新修改到远程仓库中

并不是一定要把本地分支都往远程推送,那么,哪些分支需要推送,哪些不需要呢?

  • master分支是主分支,因此要时刻与远程同步;

  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

  • 总之,就是在Git中,分支完全可以在本地自己藏着玩,是否推送,视你的心情而定!

  • git checkout -b <本地分支别名> origin/<远程分支别名> 在本地创建和远程分支对应的分支
  • git branch --set-upstream-to <本地库分支别名> origin/<远程库分支别名> 建立本地分支和远程分支的关联。git pull时提示There is no tracking information for the current branch.说明没有关联。
  • git pull <远程库别名> <远程库分支别名> 从远程抓取最新的提交

5.7 Rebase

  • git rebase 把本地未push的分叉提交历史整理成直线,

6. 标签管理

6.1 创建标签

  • git tag 查看所有标签
  • git tag <tagname> 在当前分支打一个新标签,默认标签是打在最新提交的commit(HEAD)上的。tagname是命名的标签名称。
  • git tag <tagname> <commit_id> 在指定提交上打一个新标签。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
  • git tag -a <tagname> -m <标签说明> <commit_id> 在指定提交上打一个新标签,并加上标签说明文字。tagname是命名的标签名称,commit_id可选,不指定commit_id时标签默认打在最新提交的commit(HEAD)上。
  • git show <tagname> 查看标签信息

6.2 操作标签

  • git push origin <tagname> 推送一个本地标签

  • git push origin --tags 推送全部未推送过的本地标签

  • git tag -d <tagname> 删除一个本地标签

    删除远程标签

    [1] git tag -d <tagname> 先删除本地标签

    [2] git push origin :refs/tags/<tagname> 推送删除标签

7. 自定义Git

7.1 忽略特殊文件

  • git add -f <fileName> 强制添加文件到git(被忽略的文件也可以添加,不加-f无法添加被忽略的文件)
  • git check-ignore -v <fileName> 查看文件被忽略的是因为哪条规则。Git会告诉我们,.gitignore的第几行规则忽略了该文件。

7.2 配置别名

  • git config --global alias.<别名> 原始命令 被原始命令起别名,相当于简写。使用别名和原始命令效果一样。当原始命令中有多个单词,包含空格时,应该使用单引号''把原始命令包起来,如果不加单引号将使用别名后的第一个单词作为原始命令。

示例:

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.st status
$ git config --global alias.unstage 'reset HEAD'
$ git config --global alias.last 'log -1'

--global参数

--global参数是全局参数,是针对当前用户起作用的,也就是这些命令在这台电脑的所有Git仓库下都有用。如果不加,那只针对当前的仓库起作用。

配置文件位置

  • 每个仓库的Git配置文件都放在.git/config文件
  • 用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig

配置文件内容

[alias] 别名

[user] 用户相关配置

相关文章

  • svn & git 常用命令(简)2014-12-16

    svn 命令: git 命令: 《pro git》笔记后面梳理

  • Git book

    目录 git community book git入门 git笔记 git 用法 git安装使用手册 git命令大...

  • Git常用命令

    Git命令笔记 ========================================== 下载地址:h...

  • git 入门

    git 入门学习笔记----3个入门命令:git init、git add、git commit -v 学习场景(...

  • 学习笔记

    第一个markdown笔记 git相关 常用git操作命令撤销commit : git checkout [com...

  • Git教程笔记

    笔记20170207:Git教程 初始化一个Git仓库,使用git init命令。 添加文件到Git仓库,分两步:...

  • Git小笔记+PostgreSql设置笔记。

    Git笔记 添加文件到 .gitignore 中命令:echo '.idea/*' >> .gitignore 从...

  • Git学习笔记(廖雪峰)

    Git学习笔记(廖雪峰) 创建版本库 小结 初始化一个Git仓库,使用git init命令。 添加文件到Git仓库...

  • git(分布式版本控制器)学习笔记-廖雪峰

    git(分布式版本控制器)学习笔记-廖雪峰 一、git的安装(服务器端) 二、git常用命令 1.远程仓库相关命令...

  • GIT 笔记一:基本操作

    GIT 笔记一:基本操作 SVN 笔记一:入门 Git已经非常流行,网络上的教程很多。这里做个归纳吧。命令行操作很...

网友评论

      本文标题:git命令笔记

      本文链接:https://www.haomeiwen.com/subject/hkgqjktx.html