GIt学习笔记

1、安装GIt

1.1、Win下安装git:

下载:https://git-scm.com/download/win

基本上一路回车,安装成功后,点击Git Bash,出现如下图说明安装成功:

1.2、设置名字和邮件:

git config --global user.name ldq
git config --global user.email ”ldq@qq.com“

2、创建版本库

版本库又名仓库,英文名repository

小结:

git init   #初始化git

git add  file1 

git commit -m “注释”  #提交版本信息

Administrator@WSQRUUOEZ1H434O MINGW64 ~
$ mkdir learngit#创建版本库文件

Administrator@WSQRUUOEZ1H434O MINGW64 ~
$ cd learngit/

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit
$ pwd
/c/Users/Administrator/learngit

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit
$ git init#初始化版本库文件
Initialized empty Git repository in C:/Users/Administrator/learngit/.git/

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ ls -al#多了一个.git文件
total 20
drwxr-xr-x 1 Administrator 197121 0 9月  25 17:07 ./
drwxr-xr-x 1 Administrator 197121 0 9月  25 17:07 ../
drwxr-xr-x 1 Administrator 197121 0 9月  25 17:07 .git/

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ vi readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git add readme.txt#新增文件
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ ls
readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git commit -m "wrote a readme file"#提交代码-m注释
[master (root-commit) bcb8042] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$

3、时光机穿梭

小结:

git status  #查看git状态

git add  file1 #新增代码文件

git diff readme.txt #比较代码文件

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ vi readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ 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.txt

no changes added to commit (use "git add" and/or "git commit -a")

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   readme.txt


Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git commit -m "test readme.txt"
[master ba06e36] test readme.txt
 1 file changed, 1 insertion(+), 1 deletion(-)

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git diff readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ vi readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git diff readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory
diff --git a/readme.txt b/readme.txt
index c9d14fd..4aed2d2 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a test version control system.
+Git is a test2 version control system.
 Git is free software.

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ 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.txt

no changes added to commit (use "git add" and/or "git commit -a")

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git commit -m "test2 readme.txt"
[master 0908706] test2 readme.txt
 1 file changed, 1 insertion(+), 1 deletion(-)

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$

1、版本回退

git用hard来指定那个版本,使用git reset来指定回退那个版本

git reset --hard HEAD^  #指定会回到上一个版本 上上个版本^^  上10个版本~10

git reset  --hard 0809  #指定版本号

git log   #查看版本信息

git log  --pretty=oneline #美化查看信息

git reflog  #查看历史信息

Administrator@WSQRUUOEZ1H434O MINGW64 ~
$ cd learngit/

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git log
commit 09087062f3a05bad86ac8274652655370941ec82 (HEAD -> master)
Author: ldq <“961811769@qq.com>
Date:   Tue Sep 25 17:32:05 2018 +0800

    test2 readme.txt

commit ba06e367f0b657030314918fe5e0249dafe89880
Author: ldq <“961811769@qq.com>
Date:   Tue Sep 25 17:30:30 2018 +0800

    test readme.txt

commit bcb80425fd26bda94e289953d4c552f3ba1a1c02
Author: ldq <“961811769@qq.com>
Date:   Tue Sep 25 17:18:55 2018 +0800

    wrote a readme file

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git log --pretty=oneline
09087062f3a05bad86ac8274652655370941ec82 (HEAD -> master) test2 readme.txt
ba06e367f0b657030314918fe5e0249dafe89880 test readme.txt
bcb80425fd26bda94e289953d4c552f3ba1a1c02 wrote a readme file

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git reset --hard HEAD^
HEAD is now at ba06e36 test readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git log --pretty=oneline
ba06e367f0b657030314918fe5e0249dafe89880 (HEAD -> master) test readme.txt
bcb80425fd26bda94e289953d4c552f3ba1a1c02 wrote a readme file

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ cat readme.txt
Git is a test version control system.
Git is free software.

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git reset --hard 0908
HEAD is now at 0908706 test2 readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git log --pretty=oneline
09087062f3a05bad86ac8274652655370941ec82 (HEAD -> master) test2 readme.txt
ba06e367f0b657030314918fe5e0249dafe89880 test readme.txt
bcb80425fd26bda94e289953d4c552f3ba1a1c02 wrote a readme file

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ cat readme.txt
Git is a test2 version control system.
Git is free software.

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git reflog
0908706 (HEAD -> master) HEAD@{0}: reset: moving to 0908
ba06e36 HEAD@{1}: reset: moving to HEAD^
0908706 (HEAD -> master) HEAD@{2}: commit: test2 readme.txt
ba06e36 HEAD@{3}: commit: test readme.txt
bcb8042 HEAD@{4}: commit (initial): wrote a readme file

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$

2、工作区和暂存区

Git和其他SVN不同之处在于还有一个暂存区的概要。

工作区:看到的文件夹eg:learngit

版本库:learngit 下有个隐藏文件.git的文件夹是Git版本库

暂存区:stage或者index #git add file1 file2 后就把file1和file2  存放到了stage

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ vim readme.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ vim test.txt

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ 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.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        test.txt

no changes added to commit (use "git add" and/or "git commit -a")

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git add readme.txt  test.txt
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ git commit -m "add-test.txt-index"
[master 47759dc] add-test.txt-index
 2 files changed, 2 insertions(+)
 create mode 100644 test.txt

3、管理修改

Git比其他版本控制系统设计的优秀,因为Git跟踪并管理的是修改,而非文件。

如果第一次修改完执行git add 然后再对他修改,修改完了,直接执行git commit ,提交的是第一次修改完的内容,而非第二次修改的,所以第二次修改完以后,需要再次执行add操作。

第一次修改 -> git add -> 第二次修改 -git add -> git commit

 

4、撤销修改

敲代码时候,修改错文件了,想把这个文件的修改给撤销了,应该怎么办:

1、git checkout -- file      #没有执行过git add 的时候

2、git reset HEAD <file>  #执行过git add的时候

      git checkout -- file  

3、git reset --hard HEAD^  #执行过commit

 

5、删除文件

rm test.txt

git rm test.txt  #git add test.txt 效果一样

git commit -m "remove test.txt" 

删除错了想恢复怎么办?

git checkout -- test.txt   

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

 

3、添加远程库 

1、新建本地仓库

这里用之前做实验的,就不在新建了,新建方法如下:

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:ldqchw/test.git
git push -u origin master

2、本地创建SSH公钥

ssh-keygen -t rsa -C "ldqchw"

-C   "GItHub用户名"

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ ssh-keygen -t rsa -C "ldqchw"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa.
Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:2Ts7qFAQNiJyKd0Joos+eu4ZKfRAWgXWHlagErsfaHg ldqchw
The key's randomart image is:
+---[RSA 2048]----+
|=.***+.          |
|+Bo=*o           |
|+ooo..           |
|=*  ..   o       |
|B+E   . S .      |
|+ooo .     .     |
|.o+..    .o      |
|..oo .  . .o     |
|.++   ..  ..     |
+----[SHA256]-----+

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ cat /c/Users/Administrator/.ssh/
id_rsa       id_rsa.pub   known_hosts

Administrator@WSQRUUOEZ1H434O MINGW64 ~/learngit (master)
$ cat /c/Users/Administrator/.ssh/id_rsa.pub
damaXXXXXXXXXXXXXXXXXXXXXdama

3、将SSH公钥导入GitHub

4、GitHub上新建一个项目

5、本地同步到远程

第一次同步:

git remote add origin git@server-name:path/repo-name.git  或者  git remote add origin https://github.com/ldqchw/learngit.git

eg:

git remote add origin https://github.com/GitHub名字/仓库名字.git

ssh -T git@github.com #测试是否能通信

git push -u origin master

以后同步:

git push  origin master

origin  #俗称默认远程可改

6、从远程克隆到本地

git clone git@github.com:michaelliao/gitskills.git 

参考:

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

https://www.cnblogs.com/qcwblog/p/5709720.html

 

posted @ 2018-09-27 17:12  竹小冉  阅读(243)  评论(0编辑  收藏  举报