目录
- Git和SVN的区别
- git教程:理论基础
- git的三棵树:
- 工作区域(工作目录):
- 暂存区域:
- git仓库:
- git的工作流程:
- git回滚快照的工作流程:
- git管理的文件三状态:
- git的三棵树:
- git教程:入门操作
- 初次使用Git的前的配置
- 1、在命令行模式中输入以下命令:
- 2、然后查看配置信息:
- 3、进入git的项目目录:
- 4、初始化git:
- 查看快照:
- 删除两个无用commit
- Git删除版本库中的一个commit
- 初次使用Git的前的配置
- git教程:git分支
- git创建分支:
- git删除分支:
- git切换分支:
- git合并分支:
- git创建分支的方式:指针指向分支的开始点
- git教程:几种状态
- 正常状态
- 有文件被删除的状态
- 有新文件的状态
- 文件内容被修改的状态
- 文件被重命名时的状态
- git教程:版本对比
- git diff表示版本对比
- git diff 快照ID1 快照ID2
- git diff 快照ID
- git diff --cached 快照ID
- How to push your projects to github
- create a new repository on the command line
- push an existing repository from the command line
- github url of https
- github url of ssh
Git和SVN的区别
SVN记录的是每一次版本变动的内容
Git是将每个版本独立保存
git教程:理论基础
三棵树
工作流程
三状态
git的三棵树:
工作区域(工作目录):
平时存放项目的地方。
暂存区域:
临时存放你的改动。是一个文件,存放即将提交到仓库的一个列表信息。
git仓库:
最终安全存放所有版本信息的位置。
git的工作流程:
- 1.在工作目录中添加、修改文件。
- 2.将需要进行版本管理的文件放入暂存区域。
- 3.将暂存区域的文件提交到git仓库。
git回滚快照的工作流程:
- 1.移动HEAD的指向(--soft)
- 2.将快照回滚到暂存区域(--mixed,默认)
- 3.将暂存区域还原到工作目录(--hard)
git管理的文件三状态:
- 已修改(modified)
- 已暂存(staged)
- 已提交(committed)
git教程:入门操作
初次使用Git的前的配置
(已安装Git软件,并在安装时自动配置环境变量path):
1、在命令行模式中输入以下命令:
git config --global user.name "Tsui"
git config --global user.email "tsuish@qq.com"
2、然后查看配置信息:
git config --list
3、进入git的项目目录:
C:UsersAdministrator>cd /d D:workspaceGit_Myproject
D:workspaceGit_Myproject>
4、初始化git:
D:workspaceGit_Myproject>git init
Reinitialized existing Git repository in D:/workspace/Git_Myproject/.git/
git status:查看git的当前工作状态
查看快照:
git log
git log --oneline
//--oneline:快照的精简版本
git log --help
//git log的帮助文档,会在浏览器中打开
git log --graph --all
//--graph表示图形化显示log
//--all表示显示所有的分支
D:workspaceGit_Myproject>git log --oneline --graph --all
* 5b6b147 (HEAD -> master) modify a file cshcesh.txt v0.3
| * bef58a0 (feature) add a file testspool.txt featurev0.2
| * 220fa33 add a file test.txt featurev0.1
|/
* 1346315 add a file cshcesh.txt v0.2
* 62a8bde add two file v0.1
快照ID不用全部输入,前5个就可以
新添加的文件不在暂存区域,则为未跟踪状态。
新添加的文件在暂存区域,则为跟踪状态。
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令 git checkout -- file 。(懂)
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD file ,就回到了场景1,第二步按场景1操作。(懂)
- 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考 版本回退(https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192)一节,不过前提是没有推送到远程库(不懂)
删除两个无用commit
- 1、首先修改仓库(本地和暂存区域不变),回退到前面的版本
git reset --soft HEAD~3
- 2、然后commit,中间的版本相当于删除了
git commit -m "delete 2 commits"
Git删除版本库中的一个commit
- 在使用git的时候,本来不想提交一个文件的,但是一不小心就commit了,所以就了解了一下怎么删除该commit,当你此时还没有push的时候,只需要一条命令:
git reset --hard HEAD~1
- 直接取消上一次 commit用git reset HEAD~1; 如果加上参数--hard 则不保留当前更改
如果你已经push了,那么使用如下命令://回滚到你想回滚的commit git reset --hard <commit_id> //重新push到你的远程仓库 git push origin HEAD --force
git教程:git分支
git创建分支:
D:workspaceGit_Myproject>git branch feature
//创建一个分支,分支名是feature
D:workspaceGit_Myproject>git log --decorate
//--decorate标记让git log显示指向这个提交的所有引用(比如说分支、标签等)
commit 13463151f6863d6c2b1e9a9a90bc886ad13c7383 (HEAD -> master, feature)
//默认分支是master,即主分支
//另一个分支是feature
//HEAD现在指向的是master分支
Author: Tsui <tsuish@qq.com>
Date: Sun Apr 28 22:10:40 2019 +0800
add a file cshcesh.txt v0.2
commit 62a8bdeee21268fd7d3285c18e1b8e476ece16a3
Author: Tsui <tsuish@qq.com>
Date: Fri Apr 26 15:21:56 2019 +0800
add two file v0.1
git删除分支:
git branch -d或 --d 分支名
//--d是全称,--d是精简的表示,两个命令一样
D:workspaceGit_Myproject>git branch -d feature2
Deleted branch feature2 (was 678c20e).
D:workspaceGit_Myproject>git log --all --graph --oneline
* 678c20e (HEAD -> master) add a file feature2.txt feature2v0.1
* de4c5bf Merge branch 'feature'
|
| * bef58a0 add a file testspool.txt featurev0.2
| * 220fa33 add a file test.txt featurev0.1
* | 5b6b147 modify a file cshcesh.txt v0.3
|/
* 1346315 add a file cshcesh.txt v0.2
* 62a8bde add two file v0.1
git切换分支:
(从分支切换到主分支,分支文件也显示了)
D:workspaceGit_Myproject>git checkout feature
//git checkout -b feature2:表示创建并切换分支
Switched to branch 'feature'
D:workspaceGit_Myproject>git log
commit 13463151f6863d6c2b1e9a9a90bc886ad13c7383 (HEAD -> feature, master)
Author: Tsui <tsuish@qq.com>
Date: Sun Apr 28 22:10:40 2019 +0800
add a file cshcesh.txt v0.2
commit 62a8bdeee21268fd7d3285c18e1b8e476ece16a3
Author: Tsui <tsuish@qq.com>
Date: Fri Apr 26 15:21:56 2019 +0800
add two file v0.1
git合并分支:
git merge 分支名
D:workspaceGit_Myproject>git merge feature2
Updating de4c5bf..678c20e
Fast-forward
feature2.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 feature2.txt
git创建分支的方式:指针指向分支的开始点
图解如下:
git教程:几种状态
正常状态
D:workspaceGit_Myproject>git status
On branch master
nothing to commit, working tree clean
有文件被删除的状态
(从工作区域删除了,暂存区域不变,仓库不变):
D:workspaceGit_Myproject>git status
On branch master
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: README.md
no changes added to commit (use "git add" and/or "git commit -a")
有两个选择:
选择1:删除版本库中对应文件(分三步)
选择2:从版本库中恢复文件
- 选择1:(第一步:将文件从暂存区域删除)
D:workspaceGit_Myproject>git rm README.md
//git rm -f README.md表示暴力删除(force remove)
//应用场景:删除工作区域和暂存区域内容不一样的文件
//加-f会同时把工作区域和暂存区域的文件删除(这一点和不加一样)
//git rm --cached README.md表示:
//只删除暂存区域的文件,保留工作区域的文件
rm 'README.md'
- 选择1:(第二步【会在log中新建快照】:将暂存区域文件提交到仓库)
D:workspaceGit_Myproject>git commit -m "remove README.md"
//-m表示提交暂存区域文件到仓库时的注释内容
[master 0eb2b88] remove README.md
1 file changed, 1 deletion(-)
delete mode 100644 README.md
- 选择1:(第三步:将仓库中新建的快照删除)
D:workspaceGit_Myproject>git reset --soft 快照ID
- 选择2:
D:workspaceGit_Myproject>git checkout -- README.md
D:workspaceGit_Myproject>git status
On branch master
nothing to commit, working tree clean
有新文件的状态
(工作区域新增文件,未在暂存区域,未提交到仓库):
D:workspaceGit_Myproject>git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
将新文件存放到仓库,分两步
- 第一步:添加文件到暂存区域(工作区域新增文件,暂存区域新增文件,未提交到仓库):
D:workspaceGit_Myproject>git add README.md
//也可以git add *
D:workspaceGit_Myproject>git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README.md
- 第二步:将暂存区域文件提交到仓库:
D:workspaceGit_Myproject>git commit -m "add README.md 2019-4-25"
//-m表示提交暂存区域文件到仓库时的注释内容
[master 1c0e390] add README.md 2019-4-25
1 file changed, 1 insertion(+)
create mode 100644 README.md
文件内容被修改的状态
(工作区域文件修改,暂存区域不变,仓库不变):
D:workspaceGit_Myproject>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.md
no changes added to commit (use "git add" and/or "git commit -a")
将修改后的文件添加到仓库,分两步
- 第一步:将修改后的文件添加到暂存区域:
D:workspaceGit_Myproject>git add README.md
D:workspaceGit_Myproject>git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: README.md
- 第二步:将暂存区域文件提交到仓库:
D:workspaceGit_Myproject>git commit -m "modify: README.md 2019-4-25 v0.1"
//-m表示提交暂存区域文件到仓库时的注释内容
[master 2b09814] modify: README.md 2019-4-25 v0.1
1 file changed, 1 insertion(+), 1 deletion(-)
文件被重命名时的状态
(工作区域文件修改,暂存区域不变,仓库不变):
git显示原文件被删除,添加了一个新文件。
D:workspaceGit_Myproject>git status
On branch master
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: cesh.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
cshcesh.txt
no changes added to commit (use "git add" and/or "git commit -a")
重命名文件名的方法,分三步:
第一步:在工作区域把文件名改回去,git状态正常。
第二步:用git mv命令修改工作区域和暂存区域文件名
第三步:提交暂存区域文件到仓库中
D:workspaceGit_Myproject>git mv cesh.txt cshcesh.txt
//git mv 旧文件名 新文件名 等价于以下两步:
// git rm 旧文件名
// git add 新文件名
D:workspaceGit_Myproject>git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: cesh.txt -> cshcesh.txt
D:workspaceGit_Myproject>
D:workspaceGit_Myproject>git commit -m "rename cesh.txt -> cshcesh.txt v0.4"
[master 879bee4] rename cesh.txt -> cshcesh.txt v0.4
1 file changed, 0 insertions(+), 0 deletions(-)
rename cesh.txt => cshcesh.txt (100%)
git教程:版本对比
git diff表示版本对比
仓库为旧-,工作区域为新+
git diff 快照ID1 快照ID2
表示比较两个快照
快照顺序有影响,前面的为旧-,后面的为新+
git diff 快照ID
表示比较当前工作区域和仓库中的快照。
仓库为旧-,工作区域为新+
git diff --cached 快照ID
表示比较暂存区域和仓库中的快照。
暂存区域为旧-,仓库为新+
不加快照ID表示当前HEAD指向的快照
D:workspaceGit_Myproject>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.md
modified: game.py
no changes added to commit (use "git add" and/or "git commit -a")
D:workspaceGit_Myproject>git diff
//git diff命令:查看文件改动的详情
diff --git a/README.md b/README.md
//表示对比的是工作区域和暂存区域的文件README.md
index 197049a..e30bfa5 100644
--- a/README.md
//---表示是旧文件,即存放在暂存区域的文件
+++ b/README.md
//+++表示是新文件,即存放在工作区域的文件
@@ -1 +1,2 @@
//@@开头@@结尾,中间的-表示旧文件,+表示新文件,
//-1表示旧文件从第一行开始显示
//+1,2表示新文件从第一行开始显示,一共显示两行
//-1后没有数字,表示旧文件已经完全包含在新文件中了
+1233311111111111111111111111
//+号后面的内容表示是新文件所特有的
<E6><96><87><E5><AD><97><E6><B8><B8><E6><88><8F>
No newline at end of file
//这两行表示是新旧文件共有的内容
// No newline at end of file表示:文件不是以换行符结束
diff --git a/game.py b/game.py
index e69de29..8ffc73b 100644
--- a/game.py
+++ b/game.py
@@ -0,0 +1 @@
+123133333333333333
No newline at end of file
D:workspaceGit_Myproject>
How to push your projects to github
create a new repository on the command line
echo "# springdemo" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/BitTsui/springdemo.git
git push -u origin master
push an existing repository from the command line
git remote add origin https://github.com/BitTsui/springdemo.git
git push -u origin master
github url of https
https://github.com/BitTsui/springdemo.git
github url of ssh
git@github.com:BitTsui/springdemo.git