【1】创建Git仓库
首先进入需要管理代码的文件夹(第一次使用建议还是新建一个空文件夹,然后新建一个记事本文件,但是不要使用微软自带的,因为它的编码格式存在问题,建议使用notepad++等文本编辑器。当然,用代码编辑器进入该目录来创建文件也是一个不错的选择),我们先进入到test文件夹内部。
现在在当前文件夹内右键,选择Git Bash Here打开Git的命令窗口。这样新打开的窗口指向的目录就是当前的文件夹,省去了切换文件夹跳路径的麻烦。
如果是这台电脑第一次使用Git,那我们先得给Git的配置文件写入用户信息:
git config --global user.name "example" git config --global user.email "example@domain.com"
复制的时候需要注意:
1、Git中的复制使用的快捷键是:Ctrl+Insert
2、Git中的粘贴使用的快捷键是:Shift+Insert
以上步骤完成后,在Git的命令窗口输入命令:
git init
这个时候在当前文件夹内会生成一个隐藏文件.git(作为开发者,我们通常都是不会让隐藏文件真正隐藏的),这个文件就是Git创建的基本“仓库”。
到这里,我们的Git仓库就创建完成了。
一个良好规范的项目里通常都应该包含一个自述文件README.md,我们可以手动添加这个文件,也可以使用以下命令创建一个README.md自述文件:
echo "git示例的自述文件" > README.md
或者是在Git的命令窗口输入命令:
touch README.md
引号中的内容为文件生成后的文本,可以这样写随便写一个标题,具体内容后续再通过文本编辑器修改。按照规范,该文件的文件名应该大写。
添加完成后记得也要按“添加 -> 提交”的步骤将该文件也提交到Git仓库
【2】添加文件到Git仓库
Git仓库已经创建完成,我们现在先做一个简单的测试。新建一个记事本文件test.txt(如果已经有记事本文件就不用再建了)。
然后在Git的命令窗口输入以下命令:
git add test.txt
没有任何反应?那就对了。有信息输出?那你就做错了,请检查命令是否输对,或者文件名是否输对,上面的命令中是否包含两个空格。
如果需要添加多个文件,后续再输入对应的文件名+扩展名即可,每个文件之间用空格隔开。
其实还有一个偷懒的做法,就是这样:
git add .
后面是一个英文状态下的“句号”,这样可以一次性帮你把当前目录所有的文件都提交到Git仓库,也是实际开发中最常用的做法。
【3】忽略和排除文件的添加
创建版本库
2.1创建资源库所在的目录,命令:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
pwd命令用于显示当前目录完整路径,为了避免各种问题我们尽量避免路径命中出现中文字符。
2.2通过git init命令把这个目录编程GIt可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
!注意:版本控制系统只能跟踪文本文件的改动,例如txt文件、网页和所有的程序代码。版本控制器可以告诉你你的每次改动,但是图片、视频等二进制文件没办法跟踪,只知道文件大小的改变。在Windows下word格式也是二进制文件,因此我们如果要真正使用版本控制系统,就要以纯文本方式来编写文件,并且强烈建议使用标准的UTF-8编码。并且编辑文本文件我们推荐Notepad++,并要记得设置默认编码为UTF-8 without BOM.
2.3添加文件到资源库
第一步:我们新建一个文本文件到我们的资源库learngit目录下。
第二步:试用git add命令告诉GIt,把文件添加到资源库
$ git add test.txt
执行命令后,没有提示信息。
第三步:用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a test file"
说明:执行上述命令会打印提示信息如:
[master (root-commit) 3b15333] wrote a test file
1 file changed, 1 insertion(+)
create mode 100644 test.txt
git commit命令:-m后面输入的是本次提交的说明,可以输入任意有意义的内容,这样方便从历史记录中找到改动记录。
此外,我们可以同时添加很多文件,一起提交,例如:
$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files."
三,版本回退
3.1修改文件
原始文件中的内容为:this is my first time to use Notepad++;
在原始文件中添加新的内容为:Add a new line。
3.2使用git status命令查看状态:
$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working d modified: test.txt no changes added to commit (use "git add" and/or "git commit -a")
执行git status命令,会打印提示消息。上述提示消息中告诉我们文件被修改,并没有提交。
3.3使用git diff命令查看详细修改内容;
$ git diff diff --git a/test.txt b/test.txt index d829b41..d6e3bba 100644 --- a/test.txt +++ b/test.txt @@ -1 +1,2 @@ -this is my first time to use Notepad \ No newline at end of file +this is my first time to use Notepad +Add a new line。 \ No newline at end of file
3.4使用git add test.txt 命令和git commit -m “add a new line.”提交修改;然后在文本中新添加内容“add a new line again”,以上述命令重新执行一边。
3.5使用git log查看修改记录。
$ git log commit 4e8b0d0aaa685a83fb96fe52997e5af1e9e541ce Author: bill <huangyabin001@163.com> Date: Sat Jun 28 13:48:29 2014 +0800 add a new line again commit d4d025a1cffaa761a7b82f39551465f7610a82db Author: bill <huangyabin001@163.com> Date: Sat Jun 28 13:47:43 2014 +0800 add a new line commit 3b15333fdbb147f183a9d3013eadfafc9b05b127 Author: bill <huangyabin001@163.com> Date: Sat Jun 28 13:18:15 2014 +0800 wrote a test file
上述命令git log执行后会打印出具体日志信息。从上述信息中我们可以得到每次提交的记录,记录中包含提交的描述性信息例如“wrote a test file”,提交时间,提交人的具体信息等。而“commit 3b15333fdbb147f183a9d3013eadfafc9b05b127”则是我们每次提交的提交版本号,也称之提交的记录ID。
如果我们不需要提交人,提交时间等信息,我们也可以以一种更简洁的方式查看日志,只需要加上“--pretty=online”参数即可。
$ git log --pretty=oneline 4e8b0d0aaa685a83fb96fe52997e5af1e9e541ce add a new line again d4d025a1cffaa761a7b82f39551465f7610a82db add a new line 3b15333fdbb147f183a9d3013eadfafc9b05b127 wrote a test file
3.6使用git reset命令回退版本
在工作当中,我们不可避免的使用回退版本,例如一个模块负责人提交了一部分代码,在项目负责人发编译发布版本前离开了工作岗位,项目负责人在编译发布版本的时候发现模块负责人工作失误造成项目无法编译通过,为了不耽误整个版本发布的工作,负责人不得不回退版本。
$ git reset --hard HEAD^ HEAD is now at d4d025a add a new line
上述命令中Head在Git中的概念是一个指向你正在工作中的本地分支的指针(可以把HEAD想象为当前分支的别名),其所对应的分支本质是个指向commit对象的可变指针。截止到目前的学习中,在我们若干差提交后,我们已经有了一个指向最后一次提交的master分支,它在每次提交的时候都会自动向前移动。
我们使用git log --pretty=oneline查看:
$ git log --pretty=oneline d4d025a1cffaa761a7b82f39551465f7610a82db add a new line 3b15333fdbb147f183a9d3013eadfafc9b05b127 wrote a test file
这个时候我们发现记录中已经少了一条,并且打开文件也会发现,最后修改的内容已经不见了。
还拿上面的例子来说,如果项目管理员发现编译不能通过的原因不是模块负责人的误操作引起的,而是有其他原因引起的,并且当前需要发布的版本中需要模块负责人的改动,但是版本已经回退了,能否再回退到回退前的版本呢?
答案是肯定的,我们只需要知道我们需要回退到的那个版本号commit id即可(例如当前的命令窗口没有关闭,我们可以轻轻滑动滚轴就可以看到之前的版本号),或者知道前面一部分也可以。
$ git reset --hard 4e8b0d0 HEAD is now at 4e8b0d0 add a new line again
读者可以使用git log进行查看,是否已经回退成功。
但是如果当前的命令窗口已经关闭了,我们无法在命令窗口中查看我们之前打印的版本号了怎么办?git也为我们提供了一个命令来记录我们每次执行的命令“git reflog”
$ git reflog 4e8b0d0 HEAD@{0}: reset: moving to 4e8b0d0 d4d025a HEAD@{1}: reset: moving to HEAD^ 4e8b0d0 HEAD@{2}: commit: add a new line again d4d025a HEAD@{3}: commit: add a new line 3b15333 HEAD@{4}: commit (initial): wrote a test file
上述提示信息中最前面的字符串即是我们需要的版本号。
总结:我们在电脑中能够看到的目录,例如我们新疆an的文件夹learngit文件夹就是一个工作区,而隐藏目录.git是git的版本库,在这个版本中的index文件(stage)是一个很重要的文件,我们称之为暂存区,git为我们自动创建的第一个分之master,以及指向master的一个指针称作HEAD。我们之前添加文件的操作“git add”,实际上是把文件修改添加到暂存区。而提交操作“git commit”则是把暂存区的所有内容提交到当前分支。 因此我们如果要提交修改,在提交前我们应该执行git add命令,把修改的文件添加到暂存区。
四,撤销修改 git checkout
我们不能绝对的保证在日常的工作中不会出任何差错,如果我们在提交代码前发前发现有错误,但是我们没有执行了git add命令把修改的文件添加到了暂存区,那么能否撤销此次修改呢?
答案也是肯定的。
$ git checkout -- test.txt
执行上述命令,没有任何提示消息。
而且我们也可以使用命令git reset HEAD file把暂存区的修改撤掉(unstage),重新放回工作区。
git reset HEAD test.txt
五,删除文件
首先我们新键一个文件,并去删除它
如果我们没用把它提交到版本库我们可以在文件管理器手动删除或者使用命令"rm 文件名"的方式进行删除,而如果我们要删除版本库中的文件我们可以使用"git rm 文件名"的方式来操作。
$ git rm test1.txt rm 'test1.txt'
六,远程仓库
我们知道Git是分布式版本控制系统,同一个Git仓库,可以分不到不同的机器上,怎么分布呢?最早,有一台机器又一个原始版本库,此后其他机器进行克隆原始的版本,而且每台机器的版本库版本是一样的,没有主次之分。而且我们可以在充当“服务器”的机器上进行克隆,也可在同一台机器上克隆多个版本库,只要不在同一个目录下就好。
6.1从“服务器”仓库克隆,使用github进行git存储
第一步:注册GItHub帐号,GitHub官网地址:https://github.com/ ,点击打开。
第二步:创建SSH Key。在用户主目录下,如果有.ssh目录,并且该目录下有id_rsa和id_rsa.pub这两个文件,(跳过下一步操作),如果没有在windows打开Git Bash(linux 下打开Shell),创建SSH Key:
$ ssh-keygen -t rsa -C "huangyabin001@163.com" Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/STAR/.ssh/id_rsa): Created directory '/c/Users/STAR/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/STAR/.ssh/id_rsa. Your public key has been saved in /c/Users/STAR/.ssh/id_rsa.pub. The key fingerprint is: 1e:49:1e:a4:fa:38:65:0e:4c:41:20:df:67:a2:0c:bf huangyabin001@163.com
回车,使用默认设置就好,无需设置密码。如果顺利在用户主目录下会看到id_rsa和id_rsa.pub两个文件,其中id_rsa是私钥,不可泄露出去,而id_rsa.pub是公钥,可以公开。
第三步:登陆GitHub,打开Account settings,SSH Keys页面,并点击Add SH Key,添加SSH Key,Title可以自由定义,Key文本框中就是id_rsa.pub文件的内容,直接复制即可。
如果点击Add SSH Key无反应,也就是没有弹出Title和Key的编辑框可能是浏览器的问题,换一个浏览器试试,360浏览器6.3的版本(其他版本没试,整的我开始还以为为是被墙掉了,后来验证一下才发现是浏览器的问题)就会出现这样的失误。
这里还需要解释一下,GitHub需要SSH Key的原因是为了确认确实是由你来提交的,而不是他人。
第四步:在GitHub上点击Create a new repo按钮,创建一个新的仓库。
创建成功后的界面:
第五步,将本地资源库推送到远程仓库中。
由于我们本地已经存在了一个仓库,我们可以根据上面的提示将本地的仓库推送到远程仓库中去。(请注意用户名正确,你自己的用户名)
$ git remote add origin https://github.com/huangyabin001/learngit.git
执行上述命令,没有任何信息提示;
接着执行
$ git push -u origin master Username for 'https://github.com': huangyabin001 Password for 'https://huangyabin001@github.com': Counting objects: 14, done. Delta compression using up to 4 threads. Compressing objects: 100% (9/9), done. Writing objects: 100% (14/14), 1.15 KiB | 0 bytes/s, done. Total 14 (delta 2), reused 0 (delta 0) To https://github.com/huangyabin001/learngit.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
在输入的过程中会要求你输入你在GitHub上的用户名和密码。根据提示进行操作即可。远程克隆到本地就不再赘述了,按照上面的命令进行执行即可。
刷新GitHub我们就可以看到我们push的仓库中的内容了。
相关推荐
### git详解-PDF #### 关于版本控制 版本控制系统是一种记录文件内容变更历史的软件工具,使得用户可以追踪每一个文件的变化细节,甚至恢复至任何指定时间点的状态。它分为几种类型: - **本地版本控制系统**:如...
【Git使用详解结合GitLab和GitHub】 Git是一个强大的开源分布式版本控制系统,由Linus Torvalds为Linux内核开发而创建。与传统的集中式版本控制系统(如CVS和Subversion)不同,Git采用分布式模式,每个开发者的...
### 分布式版本控制系统Git的使用详解 #### 一、Git简介 Git是一种先进的分布式版本控制系统,被广泛应用于软件开发项目中。与传统的集中式版本控制系统(如SVN)不同,Git采用分布式架构,这意味着每个开发者的...
1. **TortoiseGit**:一个用于Windows系统的Git图形界面客户端。 2. **COPSSH**:一个轻量级的SSH服务端,用于提供SSH服务。 #### 三、搭建步骤 ##### 3.1 安装COPSSH并配置 1. **安装COPSSH**: - 下载并安装...
### Git使用详解 #### 一、Git介绍 **1.1 版本控制的重要性** - **版本控制**:无论是在软件开发过程中还是文档撰写时,我们经常会遇到对内容的反复修改。传统的方法可能会导致文件版本混乱,甚至丢失重要的历史...
### Window下本地Git服务器搭建详解 #### 一、前言 随着版本控制系统的不断发展,Git因其灵活高效的特点而成为开发者的首选工具。然而,在实际工作中,很多组织由于隐私保护或成本考虑,倾向于搭建自己的Git服务器...
### Git使用入门知识点详解 #### 一、Git简介与应用场景 **Git** 是一款开源的分布式版本控制系统,用于跟踪在软件开发过程中对文件所做的更改。它最初由Linus Torvalds于2005年创建,目的是为了更高效地管理Linux...
而在Windows系统中,可以选择msysgit或者Git for Windows等。安装完成后,用户需要进行配置,包括设置用户名、邮箱、默认文本编辑器等。这些配置通常保存在用户主目录下的`.gitconfig`文件中。 基本用法包括初始化...
### Git零基础入门到实战详解 #### 一、Git简介 **Git** 是一个开源的分布式版本控制系统,用于跟踪在软件开发过程中对文件的修改。它最初由Linus Torvalds于2005年创建,目的是为了更高效地管理Linux内核的源代码...
在Windows环境下使用Git命令行是许多开发者的日常工作,Git作为一个分布式的版本控制系统,通过一系列简单的命令行指令,即可完成版本控制的各种需求,包括代码的存储、修改、共享以及备份等。Git的命令行工具在...
通过本文档提供的Git基本操作命令详解,读者可以快速上手使用git命令。 首先,了解Git的基本概念是非常重要的。在Linux和POSIX系统上,可以在Git官方网站下载Git安装包。初始化版本控制前的准备工作,可以通过git ...
SourceTree 是一款由 Atlassian 开发的免费 Git 客户端,它支持 Windows 和 Mac 操作系统。SourceTree 提供了一个直观的图形界面,方便开发者进行分支管理、合并操作、代码审查等工作。此外,它还集成了对 Bitbucket...
### Git使用方式详解 #### 一、Git简介与安装 **Git** 是一款分布式版本控制系统,主要用于跟踪在软件开发过程中对文件的修改。通过Git,开发者可以在多人协作的环境中高效地管理和追踪项目的变更历史。 ##### ...
若选择“Use Git from the Windows Command Prompt”,Git将添加到PATH环境变量中,使你在命令提示符和Git Bash下都能使用Git。这种方式可能引入一些Unix工具,但增加了便利性。 总结来说,安装Git时的参数选择对...
首先访问官方网站 [https://git-scm.com/download/win](https://git-scm.com/download/win) 下载适合Windows系统的安装包。按照提示进行安装,通常推荐使用默认选项直至完成安装过程。安装成功后,在桌面任意位置...
特别是确保勾选了“Git Bash here”和“Git from the Windows Command Prompt”等选项,以便在 Windows 环境下更方便地使用 Git。 ##### 2. Git Flow 安装准备 - **复制必要文件**:找到 Git 的安装目录(例如 `C:\...
### Git服务器端安装与使用详解 #### Git简介 Git 是一款免费且开源的分布式版本控制系统,旨在高效且灵活地管理各种规模的项目。它由 Linux Torvalds 在 2005 年为了帮助管理 Linux 内核的开发而创建,并迅速成为...
### Git与GitHub使用详解 #### 一、Git简介与特性 **Git** 是一款非常流行的分布式版本控制系统,由Linus Torvalds于2005年为了更好地管理Linux内核开发而创建。与传统的集中式版本控制系统(如SVN)不同,Git的...