C:\Users\Administrator λ git config --global user.name 'tangsansan' C:\Users\Administrator λ git config --global user.email 'tangge@vip.qq.com'
$ git init aurelia_learning $ cd aurelia_learning $ dir -all total 8 drwxr-xr-x 1 Administrator 197121 0 四月 26 22:23 . drwxr-xr-x 1 Administrator 197121 0 四月 26 22:23 .. drwxr-xr-x 1 Administrator 197121 0 四月 26 22:23 .git ## 这里是.git文件夹 ## 为了区别local和global,在这里设置 $ git config --local user.name 'tangge' $ git config --local --list user.name=tangge ... $ git config --global --list user.name='tangsansan' user.email='tangge@vip.qq.com' ...
建立仓库:git init
git
状态:git status
sql
添加:git add
shell
git add -A 提交全部变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件vim
日志:git log
网站
提交: git commit -m'Add aurelia files'
指针
删除:git rm
日志
查看工做区和版本库里面最新版本的区别:git diff HEAD -- readme.txt
code
撤销暂存区:git reset HEAD file
server
撤销修改: git checkout -- file
,这里区别于git checkout
是切换分支
查看内容:cat <file>
对象
$ mv readme.txt readme.MD
这里须要
Administrator@Y430P-TG MINGW64 /e/10.【Git】/git_learning (master) $ git add readme.MD Administrator@Y430P-TG MINGW64 /e/10.【Git】/git_learning (master) $ git rm readme.txt rm 'readme.txt'
这时候能够commit
提交了
$ git log commit 9ef0016f28654fb5bea7165b013e439c7be7d2c0 (HEAD -> master) Author: tangsansan <tangge@vip.qq.com> Date: Sat Apr 27 11:32:41 2019 +0800 rename commit 0c80384267000ea9d0b4f89c3f5ba933a25f8ba0 Author: tangsansan <tangge@vip.qq.com> Date: Sat Apr 27 10:53:49 2019 +0800 modified readme.txt commit 3624b3a1574ee44cf529511287a61f990f5ae86e Author: tangsansan <tangge@vip.qq.com> Date: Sat Apr 27 10:32:53 2019 +0800 Add readme.txt
$ git log --oneline 9ef0016 (HEAD -> master) rename 0c80384 modified readme.txt 3624b3a Add readme.txt
$ git log -n2 commit 9ef0016f28654fb5bea7165b013e439c7be7d2c0 (HEAD -> master) Author: tangsansan <tangge@vip.qq.com> Date: Sat Apr 27 11:32:41 2019 +0800 rename commit 0c80384267000ea9d0b4f89c3f5ba933a25f8ba0 Author: tangsansan <tangge@vip.qq.com> Date: Sat Apr 27 10:53:49 2019 +0800 modified readme.txt
$ git log --all --graph
# 1.查看日志 $ git log ... # 省略 ... commit 3624b3a1574ee44cf529511287a61f990f5ae86e Author: tangsansan <tangge@vip.qq.com> Date: Sat Apr 27 10:32:53 2019 +0800 Add readme.txt # 2.查看commit $ git cat-file -p 3624b3a1574e tree 10024464a9c1e1ddf17b6c144d1d99a62042d1fd author tangsansan <tangge@vip.qq.com> 1556332373 +0800 committer tangsansan <tangge@vip.qq.com> 1556332373 +0800 Add readme.txt # 3.查看 tree下的blob 10024464a9c1e1ddf17b6c144d1d99a62042d1fd $ git cat-file -p 10024464a9c1e1ddf 100644 blob 013b5bc866a4c08e10047dbd1e83c2a3a83e0f40 readme.txt # 4.再看blob内容 $ git cat-file -p 013b5bc866a4c08e1004 Git is a distributed version control system. Git is free software.
第一步,对readme.md作一个修改,好比加一行内容:
$ cat readme.MD Git is a distributed version control system. Git is free software. Add the text Git tracks changes.
添加
$ git add readme.MD $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: readme.MD
而后,再修改readme.md:
Git is a distributed version control system. Git is free software. Add the text Git tracks changes of files.
提交
$ git commit -m "git tracks changes" [master bd38a44] git tracks changes 1 file changed, 1 insertion(+)
查看状态
$ 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.MD no changes added to commit (use "git add" and/or "git commit -a")
仍是报错!!!
第一次修改 -> git add -> 第二次修改 -> git commit
你看,咱们前面讲了,Git管理的是修改,当你用git add
命令后,在工做区的第一次修改被放入暂存区,准备提交,可是,在工做区的第二次修改并无放入暂存区,因此,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。
提交后,用git diff HEAD -- readme.MD
命令能够查看工做区和版本库里面最新版本的区别:
$ git diff HEAD -- readme.MD warning: LF will be replaced by CRLF in readme.MD. The file will have its original line endings in your working directory diff --git a/readme.MD b/readme.MD index f0abcb0..0157864 100644 --- a/readme.MD +++ b/readme.MD @@ -1,4 +1,4 @@ Git is a distributed version control system. Git is free software. Add the text -Git tracks changes. +Git tracks changes of files.
那怎么提交第二次修改呢?你能够继续git add再git commit,也能够别着急提交第一次修改,先git add第二次修改,再git commit,就至关于把两次修改合并后一块提交了:
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
好,如今,把第二次修改提交了,而后开始小结。
你添加了1行
$ cat readme.md Git is a distributed version control system. Git is free software. Add the text Git tracks changes of files. My stupid boss still prefers SVN.
在你准备提交前,一杯咖啡起了做用,你猛然发现了“stupid boss”可能会让你丢掉这个月的奖金!
你能够发现,Git会告诉你,git checkout -- file
能够丢弃工做区的修改:
$ git checkout -- readme.MD $ git status On branch master nothing to commit, working tree clean
把readme.MD文件在工做区的修改所有撤销,这里有两种状况:
一种是readme.MD自修改后尚未被放到暂存区,如今,撤销修改就回到和版本库如出一辙的状态;
一种是readme.MD已经添加到暂存区后,又做了修改,如今,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
git checkout -- file
命令中的--很重要,没有--
,就变成了“切换到另外一个分支”的命令,咱们在后面的分支管理中会再次遇到git checkout
命令。
下面看第2种状况,已经提交到暂存区。
$ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: readme.MD
Git一样告诉咱们,用命令git reset HEAD file
能够把暂存区的修改撤销掉(unstage),从新放回工做区:
$ git reset HEAD reademe.MD Unstaged changes after reset: M readme.MD $ 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.MD no changes added to commit (use "git add" and/or "git commit -a")
如今已经到工做区了,还记得如何丢弃工做区的修改吗?
$ git checkout -- readme.MD $ git status On branch master nothing to commit, working tree clean
OK了。
变动没有基于 branch。