git常用操作

git常用操作

  • git中的三类文件

    1. 被追踪的(tracked):已经加入文档库
    2. 不被追踪的(untracked):没有加入文档库
    3. 忽略的(ignored):忽略那些不需要管理的文件夹或文件
  • 一个挺全的参考博客

  • 猴子git

1.创建仓库

  • 创建仓库: git init \<reponame>
  • 现有 Git 仓库中拷贝项目: git clone <repo> <directory> repo:Git 仓库。 directory:本地目录。
  • 从远程代码库拉取指定分支的代码: git clone -b v2.8.1 https://xxx.git (-b 分支名称)

2.分支管理

在大型合作团队中,我们可以每天新建一个分支,这个分支就用来给大家提交合并代码, 等到晚上大家都合并完了,再把这个分支和maste分支合并

  • 创建分支命令: git branch (branchname)
  • 切换分支命令: git checkout (branchname)
  • 创建并切换分支: git checkout -b (branchname)
  • 列出分支列表: git branch
  • 删除分支: git branch -d (branchname)
  • 分支合并: git merge --no-ff (needMergeBranchname) -m "合并注释"
  • 查看远程所有分支: git branch -r
  •   查看所有本地和远程分支: `git branch -a`
    

3.git基本操作

  • 将本地文件添加到缓存:
    • git add filname1 filename (单个 多个都可以,多个用空格隔开)
    • git add . (把新增的 修改的 文件都加到缓存中)
    • git add -A (把新增的 修改的 删除的都加到缓存中)
  • 本地从缓存中加到本地仓库中去: git commit -m "版本描述"
  • 本地一键提交到仓库中并注释: git commit -am "版本描述" 是 git add 和 git commit 的合体
  • 查看项目的当前状态: git status 查看是否有文件未提交
  • 查看执行 git status 的结果的详细信息: git diff
    • 尚未缓存的改动:git diff
    • 查看已缓存的改动: git diff --cached
    • 查看已缓存的与未缓存的所有改动:git diff HEAD
    • 显示摘要而非整个 diff:git diff --stat
    • 先列出两个版本间发生更改的文件列表: git diff commit1 commit2 --stat --name-only
    • 查看指定文件在两个版本间发生的变更: git diff commit1 commit2 -- somefile.js
    • 如果感觉这种显示不够直观,可以使用 vimdiff 查看: git difftool commit1 commit2 -- somefile.js
  • 查看提交历史: git log
    • 这个参数是一个显示美化参数,其会让提交记录在一行展示,方便我们查看。git log --oneline (--pretty=oneline --abbrev-commit 合用的简写)
    • 显示基本信息之外,还附带了每次提交的变化 git log -p -2 它会显示每次提交所引入的差异(按 补丁 的格式输出)。 你也可以限制显示的日志条目数量,例如使用 -2 选项来只显示最近的两次提交
  • 给提交点打标签
  • 从远程拉取:
    1. git fetch fetch是将远程主机的最新内容拉到本地,不进行合并
    2. git pull pull 则是将远程主机的master分支最新内容拉下来后与当前本地分支直接合并 fetch+merge
  • 推送到远程仓库: git push push 推送本地修改分支至远程git仓库
  • 远程仓库地址:
    1. git remote 查看远程仓库地址
    2. git remote -v 详细查看
    3. git remote add origin https://xxxxxxxxxxxx.git 添加远程仓库地址
    4. git remote remove origin 删除本地指定的远程地址

4.git放弃本地修改操作(慎用)

  • 参考文档
  • 未使用 git add 缓存代码时: git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 “--” ,不写就成了检出分支了!!)。放弃所有的文件修改可以使用 git checkout . 命令。
  • 已经使用了 git add 缓存了代码: git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令。此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。
  • 已经用 git commit 提交了代码: git reset --hard HEAD^ 来回退到上一次commit的状态。此命令可以用来回退到任意版本: git reset --hard commitid 你可以使用 git log 命令来查看git的提交历史。git log 的输出如下,之一这里可以看到第一行就是 commitid:

5.git忽略文件

  • 本地新增文件或文件夹,未提交到远程版本库中: 将你需要忽略的文件加入到.gitignore文件中,这些文件可能是数据库密码的配置文件 或者本地环境相关的配置等等;

    1. .gitignore可以有多个,影响范围当前文件及其子文件

    2. .gitignore文件忽略demo

       	# Maven #
       	target/
       	 
       	# IDEA #
       	.idea/
       	*.iml
       	 
       	# Eclipse #
       	.settings/
       	.classpath
       	.project
      
    3. git rm -r --cached . 删除缓存区的所有文件

  • 对于已经被git追踪的文件: 好文档推荐

    • git rm --cached filename (推荐)
      • git rm --cached 删除的是追踪状态,而不是物理文件;如果你真的是彻底不想要了,你也可以直接 rm+忽略+提交。
      • 如果误操作了,可以 gir reset HEAD filename
    • git update-index --assume-unchanged filename
      • git update-index --assume-unchanged 的真正用法是这样的:你正在修改一个巨大的文件,你先对其 git update-index --assume-unchanged,这样 Git 暂时不会理睬你对文件做的修改;
      • 当你的工作告一段落决定可以提交的时候,重置改标识:git update-index --no-assume-unchanged,于是 Git 只需要做一次更新,这是完全可以接受的了;
        提交+推送。
    • git update-index --skip-worktree filename

6.git配置

  • 查看git的配置 git config -l
  • git配置本地仓库的userName(必须) git config user.name 'djw'
  • git配置本地仓库的邮箱(必须) git config user.email 'djw@baidu.com'

7.git标签

像其他版本控制系统(VCS)一样,Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0 、 v2.0 等等)。

posted @ 2020-04-23 22:44  段佳伟  阅读(186)  评论(0编辑  收藏  举报