Git是分布式控制系统版控制技术,主要就用作标识符或是工程项目的版控制。
Git加装
关上Git官方网站下载加装流程,预设加装方可。
加装顺利完成后,关上Git bash应用软件,弹出两个类似于cmd的配置文档询问处,就断定加装获得成功。
接下去,在配置文档输出下列标识符增设你的英文名字和Email门牌号:
$ git config –global user.name “Your Name”$ git config –global user.email “[email protected]”
建立版库
版库(repository)也叫库房,能看作两个产品目录,那个产品目录里的大部份文档都由Git展开管理工作,每一文档的修正、删掉,Git都能追踪。
1.优先选择空文档夹,建立两个空产品目录:
假如采用Windows控制系统,要确保产品目录名不包涵英文。
2.通过下列命令把那个产品目录变成Git能管理工作的库房:
$ git initInitialized empty Git repository in /Users/Administrator/learngit/.git/
这样Git就把库房建好啦,在当前产品目录下就会多两个 .git 的产品目录,那个产品目录是Git来追踪管理工作版库的。
3.把文档添加到版库
我们在 learngit 产品目录下编写两个 readme.txt 文档,内容如下:
Git is a version control system.Git is free software.
(1) 用 git add 命令,把文档添加到库房:
$ git add readme.txt
执行以上命令,没有任何显示。
(2) 用 git commit 命令,把文档提交到库房:
$ git commit -m “wrote a readme file” //-m后面输出的是本次提交的说明,能输出任意内容。[master (root-commit) eaadf4e] wrote a readme file 1 file changed, 2 insertions(+) //1 file changed:1个文档被改动(新添加的readme.txt文档);2 insertions:插入了两行内容(readme.txt内有两行内容) create mode 100644 readme.txt
4.修正文档
我们已经获得成功添加并提交了两个 readme.txt 文档,继续修正 readme.txt 文档,改成如下内容:
Git is a distributed version control system.Git is free software.
运行 git status 命令:
$ git status //查看库房当前的状态On branch masterChanges not staged for commit: //没有文档将要被提交 (use “git add …” to update what will be committed) (use “git checkout — …” to discard changes in working directory) modified: readme.txt no changes added to commit (use “git add” and/or “git commit -a”)
上面的命令告诉我们,readme.txt 文档被修正过了,但还没有准备提交的修正。
假如我们想知道上次是怎么修正readme.txt 文档的,需要用 git diff 命令:
$ git diff readme.txt diff –git a/readme.txt b/readme.txtindex 46d49bf..9247db6 100644— a/readme.txt+++ b/readme.txt@@ -1,2 +1,2 @@-Git is a version control system. //这一句是被删掉的+Git is a distributed version control system. //这一句是新添加的 Git is free software.
接下去还是那两步:
(1) git add
$ git add readme.txt
没有任何输出,这时候能用 git status 查看一下当前库房状态:
$ git statusOn branch masterChanges to be committed: //将要被提交的文档包括 readme.txt (use “git reset HEAD …” to unstage) modified: readme.txt
(2) git commit
$ git commit -m “add distributed”[master e475afc] add distributed 1 file changed, 1 insertion(+), 1 deletion(-)
再用 git status 查看一下当前库房状态:
$ git statusOn branch masternothing to commit, working tree clean //当前没有需要提交的修正,而且,工作产品目录是干净的。
版回退
假如我们继续对 readme.txt 文档展开修正成如下内容:
Git is a distributed version control system.Git is free software distributed under the GPL.
然后添加并提交:
$ git add readme.txt$ git commit -m “append GPL”[master 1094adb] append GPL 1 file changed, 1 insertion(+), 1 deletion(-)
到目前为止,readme.txt 文档一共有三个版被提交到了 Git 库房里,我们能用 git log 命令展开查看:
$ git log //查看历史记录commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)Author: Michael Liao Date: Fri May 18 21:06:15 2018 +0800 append GPL commit e475afc93c209a690c39c13a46716e8fa000c366Author: Michael Liao Date: Fri May 18 21:03:36 2018 +0800 add distributed commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0Author: Michael Liao Date: Fri May 18 20:59:18 2018 +0800 wrote a readme file
假如想把 readme.txt 文档退回到上两个版,就能采用 git reset 命令:
$ git reset –hard HEAD^ //HEAD表示当前版,则HEAD^表示上两个版,那么上上版就是HEAD^^H
这时候查看一下 readme.txt 的内容,就会发现文档已经返回上两个版:
$ cat readme.txt
现在想要回到最新的版,还是采用 git reset 命令:
$ git reset –hard 1094a
这时再查看readme.txt 文档内容,就是最新版:
$ cat readme.txtGit is a distributed version control system.Git is free software distributed under the GPL.
工作区和暂存区
工作区(Working Directory)
learngit 文档夹就是两个工作区。
版库(Repository)
工作区有个隐藏产品目录 .git ,那个不算工作区,而是 Git 的版库。
版库里面的 index(stage) 文档叫暂存区,还有Git为我们自动创建的第两个分支 master ,以及指向 master 的两个指针叫做 HEAD。
要把文档添加到Git里面时,需要分两步:
第一步是用 git add 把文档添加进去,实际上就是把文档修正添加到暂存区。
第二步是用 git commit 提交更改,实际上就是把暂存区的大部份内容提交到当前分支。
通常我们用IDE或是sourcetree这样的可视化管理工作工具,这两步并不是很明显。
撤销修正
假如说你在 readme.txt 文档中添加了一行内容如下:
$ cat readme.txtGit is a distributed version control system.Git is free software distributed under the GPL.Git has a mutable index called stage.Git tracks changes of files.My stupid boss still prefers SVN.
最后一行怎么撤销呢?
(1) 没有 git add 之前
能手动删掉最后一行,手动把文档恢复到上两个版的状态。然后再用 git checkout — file 命令丢弃工作区的修正:
Git is a distributed version control system.Git is free software distributed under the GPL.Git has a mutable index called stage.
(2) git add了,但没有git commit
这时候的修正添加到了暂存区,但没有提交到分支,用 git status 查看一下:
$ git add readme.txt$ git status# On branch master# Changes to be committed:# (use “git reset HEAD …” to unstage)## modified: readme.txt#
这时候我们能采用 git reset HEAD file 命令把把暂存区的修正撤销掉,重新回到工作区:
$ git statusOn branch masterChanges to be committed: (use “git reset HEAD …” to unstage) new file: LICENSE modified: readme.txt
(3) 既 git add 了,也 git commit 了就只能回退版了。
删掉文档
在工作区即 learngit 文档夹下新建两个 test.txt 文档,并添加和提交到Git:
$ git commit -m “git tracks changes”[master 519219b] git tracks changes 1 file changed, 1 insertion(+)
这时候可用 rm 命令删掉:
$ git statusOn branch masterChanges not staged for commit: (use “git add …” to update what will be committed) (use “git checkout — …” to discard changes in working directory) modified: readme.txt no changes added to commit (use “git add” and/or “git commit -a”)
建立和合并分支
Git开发会有很多分支,通常主干都是master分支。多人合作的时候,就需要从master拉出分支来展开开发,开发结束后合并到master分支,这样既不能影响到其他人开发,也不能耽误自己的开发。
查看分支:git branch
建立分支:git branch name
切换分支:git checkout name
建立+切换分支:git checkout –b name
删掉分支:git branch –d name
添加远程库
现在我们已经在本地建立了两个Git库房了,
接下去登陆GitHub,在右上角找到“Create a new repo”按钮,建立两个新的库房:
在Repository name填入 learngit 其他保持预设增设,点击“Create repository”按钮,就获得成功地建立了两个新的Git库房:
如上图所示我已经把本地库房的内容推送到了GitHub上了,建立完以后应该是两个空的库房。接着能在本地learngit库房下运行命令:
$ git diff HEAD — readme.txt diff –git a/readme.txt b/readme.txtindex 76d770f..a9c5755 100644— a/readme.txt+++ b/readme.txt@@ -1,4 +1,4 @@ Git is a distributed version control system. Git is free software distributed under the GPL. Git has a mutable index called stage.-Git tracks changes.+Git tracks changes of files.
添加后,远程库的英文名字就是 origin ,这是Git预设的叫法。
$ git push -u origin master Counting objects: 20, done.Delta compression using up to 4 threads.Compressing objects: 100% (15/15), done.Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.Total 20 (delta 5), reused 0 (delta 0)remote: Resolving deltas: 100% (5/5), done.To github.com:RFHzhj/learngit.git * [new branch] master -> masterBranch master set up to track remote branch master from origin.
采用 git push 命令,就是把当前分支 master 推送到远程。
推送获得成功后,能立刻在GitHub页面中看到远程库的内容已经和本地一模一样:
只要本地作了提交,就能通过命令git push origin master把本地 master 分支的最新修正推送至远程的github。通过git pull origin master b把远程最新的修正更新到本地master分支。
到这,GIT的常规操作就学完了。后面也就是孰能生巧的事了。
实际去公司工作的时候,通常已经有了远程库,只要把远程库拉下来,建立自己的分支就能展开开发了。