# Git和GitHub

Bitbucket

Sourcetree

Simplicity and power in a beautiful Git GUI A free Git client for Windows and Mac

摘要

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。它同时也是个内容管理系统(CMS)和工作管理系统等。

Github是一个基于git的代码托管平台。github 可以作为git的远程仓库。Github 由Chris Wanstrath, PJ Hyett 与Tom Preston-Werner三位开发者在2008年4月创办。

Git

下载与安装

在使用Git前需先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。

Git 各平台安装包下载地址为:http://git-scm.com/downloads

主要搞清几个基本概念和Git基本操作。

  • Git 基本概念:工作区、暂存区和版本库、远程仓库

  • Git 常用的有 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull。

配置Git

本地创建ssh key:

ssh-keygen -t rsa -C "your_email@emailserver.com"

ssh -T git@github.com

git config --global user.name "your name"

git config --global user.email "your_email@emailserver.com"

实用场景

git修改文件夹名字

git mv -f oldfolder newfolder

git add -u newfolder (-u选项会更新已经追踪的文件和文件夹)

git commit -m "rename folder oldname to newname"

Git撤销本地commit

git reset HEAD~

HEAD 代表:上一次提交

Git如何永久删除文件(包括历史记录)

有些时候不小心上传了一些敏感文件(例如密码), 或者不想上传的文件(没及时或忘了加到.gitignore里的),

  • 步骤一: 从你的资料库中清除文件

里头的命令是单引号,要记得换成双引号,不然会有 fatal: bad revision 'rm’报错。

$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path-to-your-remove-file' --prune-empty --tag-name-filter cat -- --all

其中, path-to-your-remove-file 就是你要删除的文件的相对路径(相对于git仓库的跟目录), 替换成你要删除的文件即可. 注意一点,这里的文件或文件夹,都不能以 '/' 开头,否则文件或文件夹会被认为是从 git 的安装目录开始。

如:

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch Docs/附件:XXX〔2018〕134号.pdf" --prune-empty --tag-name-filter cat -- --all

如果你看到类似下面这样的, 就说明删除成功了:

Rewrite 8d4b10dab7389aaf2b821cc9bfac3cc827faa343 (1/7)

Ref 'refs/heads/main' was rewritten

Ref 'refs/remotes/origin/main' was rewritten

  • 步骤二: 推送我们修改后的repo

以强制覆盖的方式推送你的repo, 命令如下:

$ git push origin master --force --all

为了能从打了 tag 的版本中也删除你所指定的文件或文件夹,您可以使用这样的命令来强制推送您的 Git tags:

$ git push origin master --force --tags

  • 步骤三: 清理和回收空间

虽然上面我们已经删除了文件, 但是我们的repo里面仍然保留了这些objects, 等待垃圾回收(GC), 所以我们要用命令彻底清除它, 并收回空间.

命令如下:

$ rm -rf .git/refs/original/

$ git reflog expire --expire=now --all

$ git gc --prune=now

$ git gc --aggressive --prune=now

再看看你的.git目录文件大小变小了.

常用命令集锦

新建项目仓库及代码提交命令集:

mkdir myprj

cd myprj

git init

git clone username@host:/path/to/repository

git remote add origin git@github.com:yourName/youRepo.git

git remote -v

git remote rm [远程仓库别名]

git checkout master

git add .

git commit -am "code submit message"

git push origin master

git pull

git merge

git merge <对应的分支> --allow-unrelated-histories

git tag 1.0.0 1k2c3b69ef

git log

git status

git status -s

git config

git config --global -l

git config --local -l

git diff

注:Github上面近来把master默认改为main了,你可以修改设置。

Git学习教程

网上一搜可以教程一大把。随意选用,以下来自RUNOOB.COM的是一个比较完成的Git教程。

参考:

RUNOOB.COM Git教程

Github

何以言之

建议注册一个GitHub帐号。

Github学习教程

来自RUNOOB.COM的 Github 简明教程

入门极简单:git - 简明指南: 助你入门 git 的简明指南,木有高深内容 ;)

其它工具

  • SVN --subversion的缩写,是一个开放源代码的集中式版本控制系统
  • Gitee --基于 Git 的代码托管和研发协作平台
Copyright © 德和居 2021 粤ICP备20069867号 在CC-BY-NC-SA 4.0协议下授权使用,除非另有说明 all right reserved,powered by Gitbook本文修订时间: 2021-04-24 11:15:37

results matching ""

    No results matching ""

    results matching ""

      No results matching ""