您的位置:首页 > 编程语言

github笔记

2015-10-27 17:39 337 查看
git inti;把当前目录变成仓库目录
pwd;#查看当前目录
git add filename;#把文件提交当git仓库
git commit -m "wrote a readme file"
$ git diff readme.txt
$ git add readme.txt
git commit -m "add distributed"


要随时掌握工作区的状态,使用git status命令。

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

当然了,在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:

git log
commit dac66758346db27379748ed8fbf96dca2e5609a1
Author: Somedargon <296569845@qq.com>
Date:   Tue Oct 27 16:40:38 2015 +0800

append GPL

commit 6d8fbbd2f70aa5cda062573a2ec5db04fbbde17c
Author: Somedargon <296569845@qq.com>
Date:   Tue Oct 27 16:22:30 2015 +0800

adddistributed

commit 92b07af54f49667e35555d19d004b3c7355bd65f
Author: Somedargon <296569845@qq.com>
Date:   Tue Oct 27 10:37:54 2015 +0800

wrote a readme file


可以写成一行

$ git log --pretty=oneline
3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file


现在,我们要把当前版本“append GPL”回退到上一个版本“add distributed”,就可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at ea34578 add distributed


返回上一次的记录,可以用(Terminal没有关时)查看上面git log

找到被删除的commit id;

$ git reset --hard 6d8fbbd
HEAD is now at 6d8fbbd append GPL


当终端关闭时可以用 git relog查看昨天删除的ID

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

如果有一个文件第一次改变了,并且添加,但是这时候有改变了文件,提交,他会把第一文件进行添加

命令可以查看工作区和版本库里面最新版本的区别:

git diff HEAD -- readme.txt


git diff:是查看working tree与index file的差别的。

git diff –cached:是查看index file与commit的差别的。

git diff HEAD:是查看working tree和commit的差别的。(你一定没有忘记,HEAD代表的是最近的一次commit的信息)

每次修改,如果不add到暂存区,那就不会加入到commit中

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

git checkout -- readme.txt
#命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。


场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

git reset HEAD readme.txt


场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

添加一个文件

$ git add test.txt

$ git commit -m "add test.txt"

[master 94cdc44] add test.txt

1 file changed, 1 insertion(+)

create mode 100644 test.txt


添加了一个文件把它删除了

rm -rf filename


但是已经添加到了

git add filename


现在用git status

On branch master
Changes to be committed:
(
4000
use "git reset HEAD <file>..." to unstage)

new file:   test.txt

Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

deleted:    test.txt


现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

$ git rm test.txt

rm 'test.txt'

$ git commit -m "remove test.txt"

[master d17efd8] remove test.txt

1 file changed, 1 deletion(-)

delete mode 100644 test.txt


现在,文件就从版本库中被删除了。

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

$ git checkout -- test.txt


git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  github