学习git(2)

常用的git命令

1.git init 初始化一个Git仓库

2.添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  2. 使用命令git commit -m <message>,完成。

3.git status 要随时掌握工作区的状态

4.git diff 查看修改内容

使用commit存盘的优点

  每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

5.1 git log 查看所有修改的历史记录

$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: Michael Liao <[email protected]>
Date:   Fri May 18 21:06:15 2018 +0800

    append GPL                                //要求在commit的时候写明-m后面的内容

commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <[email protected]>
Date:   Fri May 18 21:03:36 2018 +0800

    add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <[email protected]>
Date:   Fri May 18 20:59:18 2018 +0800

    wrote a readme file

 5.2 git log --pretty=oneline  简洁输出所有历史修改记录

6.1恢复到前面的历史版本 git reset --hard HEAD^

  其中HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,前一百个版本简化表示为HEAD~100

6.2 git reset HEAD <file> 把暂存区的修改回退到工作区

7.回到19世纪后想去21世纪 git reflog 记录每一次命令,从中找到append GPL的commit  id就可以回到21世纪了

8.git chechout -- readme.txt 把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

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

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

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

9.1 删除文件

    rm test.txt 在文件管理器中删除文件

    git rm test.txt 后 git commit -m "remove test.txt" 在版本库中删除文件

9.2 误删可恢复的情况

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

10 添加远程库

  你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

  首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

  只需修改Repository name,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的仓库

  目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

  现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

git remote add origin [email protected]:RachelRx/learngit.git

  其中,Rachel是自己github的账户名。

  添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

  下一步,就可以把本地库的所有内容推送到远程库上:

  git push -u origin master 实际上是把当前分支master推送到远程。

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

添加远程库

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。

首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

github-create-repo-1

在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

github-create-repo-2

目前,在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

$ git remote add origin [email protected]:michaelliao/learngit.git

请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

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

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

git push origin master 把本地master分支的最新修改推送到Github。

11 创建远程库并从远程库克隆

  在github创建一个repository,并注意勾选Initialize this repository with a README,以让github自动生成readme.md文件。

   用git clone克隆一个本地库:

  git clone [email protected]:RachelRx/gitskill.git 其中名字RachelRx和文件名gitskill需要替换。

  现在就可以在本地找到这个git的仓库了! 

12 创建与合并分支

  创建并切换到dev分支:git  checkout -b dev  (其中dev是新的分支名)

  另一种创建与切换方式:git branch dev

                                          git checkout dev

  查看当前分支:git branch

  我们将readme.txt修改以后提交:git add readme.txt 

                                                       git commit -m "branch test"

  dev工作完成,切换回master分支:git checkout master

  将dev分支的工作成果合并到master分支上:git merge dev

13 解决冲突及其他参照:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840202368c74be33fbd884e71b570f2cc3c0d1dcf000

猜你喜欢

转载自blog.csdn.net/weixin_42305039/article/details/82844317