git学习1

使用git一段时间了,但依然是一知半解。得空系统学习一下git大有必要。我使用的git服务有:GitHub、Bitbucket

本文参考廖雪峰官方网站Git教程 https://www.liaoxuefeng.com/wiki/896043488029600

git简介

  • Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!

  • 在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

版本库 Repository及本地创建

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

  • 如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

  • 不建议使用自己正在开发的公司项目来学习Git,否则造成的一切后果概不负责。

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
  • 所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

    Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件

    因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

  • 千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可。

    所谓BOM,全称是Byte Order Mark,它是一个Unicode字符,通常出现在文本的开头,用来标识字节序(Big/Little Endian),除此以外还可以标识编码(UTF-8/16/32),如果出现在文本中间,则解释为zero width no-break space。 注:Unicode相关知识的详细介绍请参考UTF-8, UTF-16, UTF-32 & BOM。 对于UTF-8/16/32而言,它们名字中的8/16/32指的是编码单位是多少位的,也就是说,它们的编码单位分别是8/16/32位,换算成字节就是1/2/4字节,如果是多字节,就要牵扯到字节序,UTF-8以单字节为编码单位,所以不存在字节序。 UTF-8主要的优点是可以兼容ASCII,但如果使用BOM的话,这个好处就荡然无存了,除此以外,BOM的存在还可能引发一些问题

    notepad++ 首选项 -> 新建 -> 选择【UTF-8(无BOM)】,去掉下面的【应用于打开ANSI文件】

通过windows notepad编辑utf-8文件win_notepad_utf8.txt,使用wsl vim编辑utf-8文件wsl_vi_utf8.txt。比较发现:
文件内容都为:

中国人abc

$ vim win_notepad_utf8.txt
$ vim wsl_vi_utf8.txt

内容一样,:set fileencoding查看代码都是fileencoding=utf-8 。二进制模式查,发现结果不同:

$ vim -b win_notepad_utf8.txt
<feff>中国人abc^M
$ vim -b wsl_vi_utf8.txt
中国人abc

把文件添加到仓库

git add <file>

$ git add readme.txt

把文件提交到仓库

git commit -m <message>

$ git commit -m "wrote a readme file"

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: empty ident name (for <cary@01DJ12721003134.corp.haier.com>) not allowed
$ 

配置user.name user.email

https://bitbucket.org/account/settings/ ->

Personal setttings -> 账号设置 -> Bitbucket用户资料设置 -> 用户名:carysunqd

Personal setttings -> 电子邮件别名 -> carys@aliyun.com

$ git config user.email "caryss@aliyun.com"
$ git config --get user.name             
$ git config user.name "carysunqdd"
$ git config --get user.name
carysunqdd
$ git config --get user.email
caryss@aliyun.com
$ git commit -m "wrote a readme file"
[master 82a5f16] wrote a readme file
 1 file changed, 3 insertions(+)
 create mode 100644 readme.txt
$
  • git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

  • 1 file changed:1个文件被改动(我们新添加的readme.txt文件);3 insertions:插入了三行内容(readme.txt有两行内容)。

一次添加、提交多个文件

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
posted on 2021-04-15 12:46  carysun  阅读(43)  评论(0编辑  收藏  举报