快速上手Git操作

作者: 林水吉 | 来源:发表于2018-07-12 14:52 被阅读4次

Git配置

Git配置查看
git config --list

or

git config user.name
git config user.email 
Git账户设置
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

Git颜色显示

git config --global color.ui true

Git忽略文件设置

新建一个.gitignore文件

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa
  • 有些时候,你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了。git add -f App.class可以强制添加
  • 查看哪个规则拦截了,git check-ignore -v App.class

配置别名

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.unstage 'reset HEAD'
git config --global alias.last 'log -1'
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

配置文件

配置Git的时候,加上--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。

配置文件放哪了?每个仓库的Git配置文件都放在.git/config文件中:

$ cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = git@github.com:michaelliao/learngit.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[alias]
    last = log -1

别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。

而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中:

$ cat .gitconfig
[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
[user]
    name = Your Name
    email = your@email.com

版本库创建

在想创建仓库的文件目录下执行如下命令:

git init

ps:可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见

添加文件到暂存区

git add readme.txt
git add file1.txt file2.txt
  • 使用git status 命令可以查看暂存区的内容存储情况
  • 不管是新增文件还是修改仓库中的文件,commit之前都要add到暂存区

提交文件至本机master分支

git commit file1.txt -m "message"
git commit -m "message"

ps:commit 只会提交暂存区的文件到本机master分支

查看仓库状态

git status

ps:仓库当前的状态,可以看到哪些文件被修改了,哪些文件没被add,哪些文件被add了

查看文件的修改内容

git diff filename.txt

查看最近的提交记录

git log
git log --pretty=oneline

此命令只适用于查看当前窗口最近的命令,如果窗口重新打开后,想查看所有的命令历史,使用git reflog

版本回退

git reset --hard HEAD^
git reset --hard HEAD~100
git reset --hard 1094a
  • 在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
  • 1094a是版本号,版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

丢弃工作区的修改

git checkout -- filename.txt
  • 如果文件自修改后还没被存放到暂存取,撤销修改就会和版本库里一模一样。
  • 如果文件已添加到暂存区,又作了修改,撤销修改就会回到添加暂存区后的状态。
  • 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,第二步用命令git checkout

删除文件

git rm filename.txt
git commit -m "remove test.txt"

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

添加远程仓库

  1. 生成SSH key,在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
  2. 登陆GitHub,打开“Account settings”,“SSH Keys”页面,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
  3. 在本地的仓库下运行命令:git remote add origin git@github.com:michaelliao/learngit.git

git@github.com:michaelliao/learngit.git为远程仓库地址

本地库内容推送到远程仓库

git push -u origin master

每次本地提交后,只要有必要,就可以使用命令
git push origin master推送最新修改

从远程库克隆

git clone git@github.com:michaelliao/gitskills.git

Git分支

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

Fast forward模式合并某分支到当前分支:git merge <name>

强制禁用Fast forward模式合并某分支到当前分支:git merge --no-ff -m <comment> <name>

删除分支:git branch -d <name>

Git解决冲突

  1. git status查看冲突的文件
  2. 直接查看和修改有冲突的文件
  3. git add filename.txt
  4. git commit -m "conflict fixed"

git log --graph --pretty=oneline --abbrev-commit 可以看到分支的合并情况

Bug分支

  1. git stash 保存当前dev工作区的数据
  2. 创建bug 分支
  3. 修改并合并bug 分支
  4. 切换到dev分支
  5. git stash list 查看stash内容
  6. git stash pop 恢复保存的数据,恢复的同时把stash内容也删了
  7. 或者使用 git stash apply stash@{0}git stash drop stash@{0}恢复保存的数据

Feature分支

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

多人协作

查看远程库的信息: git remote

显示更详细的信息: git remote -v

$ git remote -v
origin  git@github.com:michaelliao/learngit.git (fetch)
origin  git@github.com:michaelliao/learngit.git (push)

上面显示了可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址。

推送分支: git push origin <branch-name>

  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

更新分支: git pull

  • git pull 如果提示There is no tracking information for the current branch. 可以使用git branch --set-upstream-to <branch-name> origin/<branch-name>
  • git pull 如果提示fatal: refusing to merge unrelated histories
    可以使用git pull --allow-unrelated-histories解决
  • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交
  • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致

Rebase

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

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

标签

  • 打标签:git tag <name> 或者 git tag <name> <commit id>
  • 创建带有说明的标签:git tag -a <name> -m "version 0.1 released" <commit id>
  • 查看标签:git tag
  • 查看标签信息:git show <tagname>
  • 删除标签:git tag -d <tagname>
  • 推送某个标签到远程:git push origin <tagname>
  • 一次性推送全部尚未推送到远程的本地标签:git push origin --tags
  • 删除远程标签: 1.git tag -d <tagname>2.git push origin :refs/tags/<tagname>

标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

常用命令

常用命令.png

此文感谢廖雪峰老师的git教程

相关文章

  • 快速上手Git操作

    Git配置 Git配置查看 or Git账户设置 Git颜色显示 Git忽略文件设置 新建一个.gitignore...

  • Git 极速学习笔记

    快速上手Git版本控制 基本概念和操作 如何提交 git add . 添加所有文件git commit -m "备...

  • Git笔记

    快速上手 基本操作 git init,初始化一个git库 git status 查看当前的状态 git confi...

  • 【Git 快速上手】五、Git 基本操作

    本文章是作者在学习 Web 开发过程中积累的笔记。如果这些笔记对你的学习有帮助,欢迎通过以下方式支持一下,你的支持...

  • git快速上手

    在我们项目开发中,基本都会用到版本控制服务。本文介绍coding(国产)的git版本控制服务使用。 第一步:在我们...

  • 快速上手GIT

    最近工作中用到了git,但是之前真的只是听到过,但是没有实际的用过。在百度了很多资料后。参照廖雪峰官方网站的G...

  • Git 快速上手

    概述 Git 管理文件的 4 种状态 未追踪(untracked) 已提交(commited) 已修改(modif...

  • git快速上手

    1. 创建版本库 创建版本库: git init 添加:git add . 提交:git commit —amen...

  • 快速上手Git

    使用git 命令行时,经常会忘记相应的git命令,这次梳理最基本的git使用当做备忘,顺带帮助读者快速上手git。...

  • Git快速上手

    前言 git作为一个先进的版本管理工具,已经被广泛应用在大量项目中。近来发现了一个非常不错的git学习网站,虽然比...

网友评论

    本文标题:快速上手Git操作

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