安装git
在Windows上使用Git,可以从Git官网直接下载,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,还需要最后一步设置,在命令行输入:git config命令的--global参数
$ git config --global user.name "Your Name" // 设置全局名称(托管中心注册的用户名)
$ git config --global user.email "email@example.com" // 设置全局邮箱 (托管中心注册的邮箱)
$ git config --global credential.helper store // 设置全局凭证存储 (当我们设置完此项全局设置之后,拉取代码时只需输入一次帐号和密码,以后的每次拉取代码都不需要重新输入用户名密码)
设置完之后,在Admin文件夹中会出现三个文件
.gitconfig // git 全局配置信息 (当我们设置全局参数时候就会出现)
.bash_history // git bash 输入命令的历史记录 (当我们关闭git bash 命令窗口时出现)
.git-credentials // git 凭证 (当我们拉取完代码之后出现)
命令
$ git --help
创建版本库
$ mkdir learngit
$ cd learngit
$ pwd
pwd命令用于显示当前目录
通过git init命令把这个目录变成Git可以管理的仓库
$ git init
当前目录下多了一个.git的目录,如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
-m后面输入的是本次提交的说明,可以输入任意内容
你可以多次add不同的文件,commit可以一次性把暂存区的所有修改提交到分支
$ git add file1.txt // add 单个文件
$ git add file2.txt file3.txt // add 多个文件
$ git add . // add 全部修改的文件
$ git add --all // add 全部修改的文件
$ git config/* // 添加config目录下及子目录下所有文件
$ git home/*.php // 添加home目录下的所有.php文件
$ git add 文件夹名 // 添加文件夹
$ git commit -m "add 3 files."
修改
修改文件之后
$ 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 directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
在分支主机上
未暂存以提交的更改:
(使用“git add <file>..”更新将提交的内容)
(使用“git checkout -- <file>…”放弃工作目录中的更改)
修改:readme.txt
没有添加要提交的更改(使用“git add”和/或“git commit-a”)
意思就是readme.txt被修改过了,但还没有准备提交的修改
$ git diff //顾名思义就是查看difference,具体修改了什么内容
$ git diff readme.txt // 查看readme.txt具体修改了什么内容
$ git diff HEAD -- readme.txt //查看上一个版本之间修改了什么内容
diff --git a/newText.txt b/newText.txt
index e69de29..9d60796 100644
--- a/newText.txt
+++ b/newText.txt
@@ -0,0 +1 @@
+distributed
\ No newline at end of file
意思就是第一行添加了一个distributed单词
之后就是再次执行添加到暂存区 git add newText.txt
再次查看状态 git status
最后 git commit -m "描述"
$ git status
On branch master
nothing to commit, working tree clean
意思就是当前没有需要提交的修改,而且,工作目录是干净(working tree clean)的
* 撤销工作区的修改(还没有git add):$ git checkout -- <file> 例如:$ git checkout -- readme.txt
* 撤销暂存区的修改(已经git add):$ git reset HEAD <file> 例如:$ git reset HEAD readme.txt
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令`git checkout -- file`。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令`git reset HEAD <file>`,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
版本回退穿梭
$ git log //命令显示从最近到最远的提交日志
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:06:15 2018 +0800
append GPL
commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:03:36 2018 +0800
add distributed
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 20:59:18 2018 +0800
wrote a readme file
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数: $ git log --pretty=oneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样)
上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
$ git reset //回退版本
现在回退到上一个版本,输入命令:$ git reset --hard HEAD^
Git提供了一个命令git reflog用来记录你的每一次命令:$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
然后可以穿梭在任意版本之间:$ git reset --hard e475afc
删除文件
$ git rm test.txt //删除文件
远程仓库(gitbub) — 推送
创建SSH Key
在用户主目录下(C:\Users\Admin),看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,
如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
如果一切顺利的话,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
登陆GitHub
打开“Account settings”,“SSH and GPG keys”页面,然后,点“New SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
点击“Create a new repo”按钮,创建一个新的仓库
目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,
也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
本地仓库与之关联命令:
$ git remote add origin git@github.com:SnowManWorld/learnGit.git
或者
$ git remote add origin https://github.com/SnowManWorld/learnGit.git
本地库的所有内容推送到远程库上:$ git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,
还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
从现在起,只要本地作了提交,就可以通过命令:$ git push origin master
远程仓库(gitbub) — 克隆
$ git clone git@github.com:SnowManWorld/learnGit.git
或者
$ git clone https://github.com/SnowManWorld/learnGit.git
网友评论