关于git和github的一些总结

git的相关命令

通过git init命令把当前目录变成Git可以管理的仓库:

git init

添加文件到git仓库

# 1用命令git add告诉Git,把文件添加到仓库:
git add XXX
# 用命令git commit告诉Git,把文件提交到仓库
git commit -m "some words about change"

为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

当修改了之前提交到git仓库的文件后,我们可以使用git status查看结果

git status

可以用git diff这个命令查看具体修改了什么内容

git diff

在Git中,我们用git log命令查看版本控制系统之前提交过的历史记录:

git log

git log命令显示从最近到最远的提交日志。
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

git log --pretty=oneline

Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了。

在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

要把当前版本回退到上一个版本,就可以使用git reset命令:

git reset --hard HEAD^

进行回退后用git log 查看版本时,最新的版本已经没有了。
但是还是可以通过commit id回到现在的版本:

git reset --hard 3628164

版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
Git提供了一个命令git reflog用来记录你的每一次命令,可以通过这个命令找到想去的版本号

git reflog

git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别。

git diff HEAD -- readme.txt

git checkout -- file可以丢弃工作区的修改。

git checkout -- file

如果对文件进行了删除,因此工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了。
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit 提交修改:

git rm XXX
git commit -m "remove XXX"

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

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

git checkout -- XXX

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

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

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

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

一种是XXX已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commitgit add时的状态。
如果需要修改已经git add 的内容的话,此时文件还在暂存区中,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

git reset HEAD XXX

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。


本博客来源于学习中的笔记:廖雪峰 git

猜你喜欢

转载自blog.csdn.net/u012630961/article/details/79875066
今日推荐