Git学习记录(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_26546385/article/details/79076336

详细的介绍在廖雪峰教程网站上,本文为学习此教程过程中的总结,仅供个人参考。

1、创建版本库(repository)及添加文件到git

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

$ git init
Initialized empty Git repository in F:/works/.git/

在当前工作区内(例如我works文件夹或其子目录)新建一个learninggit.txt文件(用cat命令查看文本内容):

$ cat learninggit.txt
I am learning git.
01.18.2018

添加文件到git步骤:

第一步,用git add命令把文件添加到仓库:

$ git add learninggit.txt

第二步,用git commit命令把文件提交到仓库:

$ git commit -m "I wrote a learninggit file"
[master (root-commit) 0dce692] I wrote a learninggit file
 1 file changed, 2 insertions(+)
 create mode 100644 learninggit.txt

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

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

2、查看修改

  • 要随时掌握工作区的状态,使用git status命令。
  • 如果git status告诉你有文件被修改过,用git diff命令可查看修改内容。


3、版本回退

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

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

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

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

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

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

4、工作区和暂存区

Git的版本库(repository)就是工作区中的隐藏文件夹.git。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

添加文件到git中的过程如下(图来自廖雪峰Git教程):

5、撤销修改

git checkout -- learninggit.txt 命令可以让这个文件回到最近一次git commitgit add时的状态。git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区。

也就是说:

  • 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用git checkout -- file命令
  • 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用git reset HEAD file命令,第二步用git checkout -- file命令
  • 已经提交了不合适的修改到版本库时,想要撤销本次提交,运用版本回退的方法,不过前提是没有推送到远程库。

6、删除文件

通常rm命令可以删除文件或者直接手动删掉。现在在版本库内可有两个选择:

一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

$ git rm learning.txt
rm 'learninggit.txt'
$ git commit -m "remove learninggit.txt"
[master d17efd8] remove learninggit.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 learninggit.txt

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

另一种情况是删错了,可从版本库里把误删的文件恢复到最新版本:

$ git checkout -- learninggit.txt

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

7、用github做远程仓库

第一步在本地创建SSH key,若在Linux上可用以下命令创建SSH key,然后一路回车:

ssh-keygen -t rsa -C "[email protected]" 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

再登陆github添加SSH key,找到账户里面添加SSH,把id_rsa.pub内容复制到key里面。然后在github上创建一个新的版本库btgit()。在本地仓库下运行:

$ git remote add origin [email protected]:NT795/btgit.git
关联本地仓库与远程仓库。如果在这里提示错误:fatal: remote origin already exists. 应该先删除远程 Git 仓库:

$ git remote rm origin

然后再添加远程 Git 仓库:

$ git remote add origin [email protected]:NT795/btgit.git

然后运行$ git push -u origin master 命令将本地仓库内容推送到github仓库(实际上是把当前分支master推送到远程)。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub。

8、从远程仓库克隆

用命令git clone从远程仓库隆一个本地库:

$ git clone git@github.com:NT795/gitskills.git

猜你喜欢

转载自blog.csdn.net/sinat_26546385/article/details/79076336