Git | 一篇文章搞定Git、GitHub的理解和使用(学习笔记)

Git learning note

本笔记整理自廖雪峰老师的Git教程,加上了自己的实践结果和一些理解,旨在使科研工作者(基本上是独立开发的那种)看完就能理解和使用Git。廖老师的教程生动活泼,条理清晰,推荐阅读。还可以赞助哦。

目录

Git 简介

Git是分布式版本控制系统。 啥是分布式,和与之相对的集中式咧?

举个栗子

小a,小b,小c共同开发项目,有两种版本控制方法:

集中式:

服务器维护一个最新版本项目,当小a/b/c要修改项目的时候,就从服务器上下载项目,改完了上传。为了保证服务器上永远是最新的,就需要一直联网;而且一旦中央服务器崩了,一切都over。

CVS是最早的版本控制系统,SVN是目前最流行的集中式版本控制系统。上述两个都是开源、免费的。

分布式

一开始,小a本地电脑有一个仓库,用于储存“小a对项目的修改”(小b、小c也一样)。需要更新整个项目的时候,小a、b、c之间就互相推送“修改”,那么本地仓库就保存了“所有人对该项目的修改”。因此,每个人都有最新版的项目,断网断电也不用担心。

时下最火热的当然就是Git啦~

Git 与 GitHub

项目伊始,只有一个原始版本库(版本库也叫仓库),别的机器可以clone这个原始版本库,那么所有clone的机器,它们的版本库其实都是一样的,并没有主次之分。

所以团队协作的时候,这样做到版本控制解:找一台电脑充当服务器的角色,oncall 24 hour,其他每个人都从这个“服务器”仓库clone一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。(具体操作请看廖老师教程)

没有搭建服务器怎么办?用GitHub。这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。

GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。

悄咪咪说一句,国内的Git托管服务是码云


Git使用

命令简要解释

命令 解释
git init 初始化/新建仓库
git config [–global] 设置Git配置
git add < filename > 添加文件修改到暂存区
git commit 从暂存区提交本次修改到当前分支
git status 查看仓库状态(哪些文件修改、是否提交)
git diff 查看和上一次commit版本的具体差别
git log 查看历史commit
git log –graph 以图的形式查看当前分支历史commit
git reset 将当前版本退回设定版本
git checkout – < filename > 撤销工作区文件的修改
git checkout < branchname > 切换到指定分支
git checkout -b < branchname > 创建并切换到分支
git rm < filename > 从当前版本删除文件(相当于在文件系统删除文件后add)
git remote add < 远程仓库名 > < 远程仓库地址 > 添加远程仓库
git remote -v 查看所有远程仓库和地址
git push < 远程仓库名 > < 本地分支名 > 将本地分支推送到远程仓库
git clone < 远程仓库地址 > 将远程仓库克隆到本地工作路径
git fetch < 远程仓库名 > 抓取远程仓库所有更新到本地仓库
git pull < 远程仓库名 > 抓取并合并远程仓库所有更新到本地仓库
git branch 查看所有分支
git branch < branchname > 创建分支
git branch -d < branchname > 删除分支,将“-d”改为“-D”是强制删除
git branch -dr < remote/branch > 删除远程分支
git merge < branchname > 将指定分支合并到当前分支上

安装

在cmd输入git,看看系统有没有安装Git:

比如在linux下:

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

创建仓库

版本库又名仓库,英文repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

在你的工作目录下,输入

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

生成的 .git 目录就是用来跟踪管理仓库的。

配置仓库

git config命令用于一系列配置。配置Git的时候,加上--global是针对当前用户起作用的(比如给命令起别名),如果不加,那只针对当前的仓库起作用。

配置文件:
每个仓库的Git配置文件都放在.git/config文件中,当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中。

添加、提交:

用命令git add <filename> 将文件更改添加到暂存区,git add .添加所有更改到暂存区

$ git add readme.txt
$ git add .

添加成功则没有返回消息

$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

参数-m 后面是这次提交的说明

忽略某种文件

工作目录下创建一个名为.gitignore的文件,把要忽略的文件名或文件夹或文件类型填进去,Git就会在commit的时候自动忽略这些文件。

不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:github/gitignore

忽略文件的原则是:

  • 忽略操作系统自动生成的文件,比如缩略图等;
  • 忽略数据集;
  • 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  • 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

举个栗子

一个.gitignore文件

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

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

# My configurations:
db.ini
deploy_key_rsa

更多实操请看廖老师教程。

撤销修改

一般步骤是 commit_last->)add_1->(add_2->…add_n)->commit,你可能会在这些时间点希望撤销:

  1. 修改还没add到暂存区,希望撤销工作区的修改,则撤销结果是撤销回上一次commit或上一次add,取决于add_1否是已经发生过

    命令git checkout -- <filename>可以丢弃工作区的修改:

    $ git checkout -- readme.txt

    --这个参数说明是针对当前分支的文件,如果只用 git checkout <branch_name>表示的是切换分支

  2. 修改已经add_i,想撤销到add_j

    不行,已经add过之后,工作区没东西可以撤销。暂存区里面没有“版本回退”。

总之,只能使用git checkout撤销工作区的修改。版本回退只能用git reset在commit过的版本库里面回退。

“删除文件”也是一种修改操作,commit过的文件一直存在版本库里,所以在工作区删除文件(如testdel.txt)也可以撤销。此时用git checkout -- <deletedfilename>可撤销还没有add的“删除操作”

举个栗子 :(|)表示当前</

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值