git与github
git
环境变量
当我们安装了git, 需要配置一些环境变量, 环境变量分为三个级别
系统级别
用户级别
项目级别
> 一般情况下我们配置最多的是 `用户级别`
用户名
git config --global user.name "lewen"
用户邮箱
git config --global user.email "fadewalk@163.com"
列出自己的环境变量
git config --list8
8
1
用户名2
git config --global user.name "lewen"3
4
用户邮箱5
git config --global user.email "fadewalk@163.com"6
7
列出自己的环境变量8
git config --list> 当我们配置了这些环境变量之后, 除了通过 `git config --list` 查看之外, 还可以通过文件查看
# mac/linux
vi ~/.gitconfig
# windows
打开 C:\Users\Magina\.gitconfig (其中Magina为我的用户名)

Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ touch style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
style.css
nothing added to commit but untracked files present (use "git add" to track)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git add style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git commit -m 'add style.css'
[master 5715233] add style.css
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
nothing to commit, working tree clean
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log
commit 57152331752788aef882372fbd080a6066783eb1 (HEAD -> master)
Author: lewen <fadewalk@163.com>
Date: Sun Oct 28 09:37:02 2018 +0800
add style.css
commit f0f236eba4566f7f8753d2a3780b96a5e1722805
Author: lewen <fadewalk@163.com>
Date: Sun Oct 28 09:31:18 2018 +0800
add index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git rflog
git: 'rflog' is not a git command. See 'git --help'.
The most similar command is
reflog
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git reflog
5715233 (HEAD -> master) HEAD@{0}: commit: add style.css
f0f236e HEAD@{1}: commit (initial): add index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
5715233 (HEAD -> master) add style.css
f0f236e add index.html
63
63
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ touch style.css3
4
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)5
$ git status6
On branch master7
Untracked files:8
(use "git add <file>..." to include in what will be committed)9
10
style.css11
12
nothing added to commit but untracked files present (use "git add" to track)13
14
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)15
$ git add style.css16
17
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)18
$ git commit -m 'add style.css'19
[master 5715233] add style.css20
1 file changed, 0 insertions(+), 0 deletions(-)21
create mode 100644 style.css22
23
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)24
$ git status25
On branch master26
nothing to commit, working tree clean27
28
29
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)30
$ git log31
commit 57152331752788aef882372fbd080a6066783eb1 (HEAD -> master)32
Author: lewen <fadewalk@163.com>33
Date: Sun Oct 28 09:37:02 2018 +080034
35
add style.css36
37
commit f0f236eba4566f7f8753d2a3780b96a5e172280538
Author: lewen <fadewalk@163.com>39
Date: Sun Oct 28 09:31:18 2018 +080040
41
add index.html42
43
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)44
$ git rflog45
git: 'rflog' is not a git command. See 'git --help'.46
47
The most similar command is48
reflog49
50
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)51
$ git reflog52
5715233 (HEAD -> master) HEAD@{0}: commit: add style.css53
f0f236e HEAD@{1}: commit (initial): add index.html54
55
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)56
$ git log --oneline57
5715233 (HEAD -> master) add style.css58
f0f236e add index.html59
60
61
62
63
git commit -m ""
rm
mv 对未添加到暂存区的文件操作
git mv
git rm 对暂存区的文件修改删除管理
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ touch test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git add test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ rm test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html main.js style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: test.js
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: test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git checkout -- test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html main.js style.css test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: test.js56
56
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ touch test.js3
4
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)5
$ git add test.js6
7
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)8
$ git status9
On branch master10
Changes to be committed:11
(use "git reset HEAD <file>..." to unstage)12
13
new file: test.js14
15
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)16
$ git status17
On branch master18
Changes to be committed:19
(use "git reset HEAD <file>..." to unstage)20
21
new file: test.js22
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)23
$ rm test.js24
25
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)26
$ ls27
index.html main.js style.css28
29
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)30
$ git status31
On branch master32
Changes to be committed:33
(use "git reset HEAD <file>..." to unstage)34
35
new file: test.js36
37
Changes not staged for commit:38
(use "git add/rm <file>..." to update what will be committed)39
(use "git checkout -- <file>..." to discard changes in working directory)40
41
deleted: test.js42
43
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)44
$ git checkout -- test.js45
46
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)47
$ ls48
index.html main.js style.css test.js49
50
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)51
$ git status52
On branch master53
Changes to be committed:54
(use "git reset HEAD <file>..." to unstage)55
56
new file: test.js#被添加到暂存区的文件才可以被checkout 恢复到工作区
# 删除暂存区,而保留工作区
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git rm test.js
error: the following file has changes staged in the index:
test.js
(use --cached to keep the file, or -f to force removal)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git rm --cached test.js
rm 'test.js'
10
10
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git rm test.js3
error: the following file has changes staged in the index:4
test.js5
(use --cached to keep the file, or -f to force removal)6
7
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)8
$ git rm --cached test.js9
rm 'test.js'10
# 删除暂存区和工作区的,checkout 不能再回撤
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: test.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git rm -f test.js
rm 'test.js'
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html main.js style.css
17
17
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git status3
On branch master4
Changes to be committed:5
(use "git reset HEAD <file>..." to unstage)6
7
new file: test.js8
9
10
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)11
$ git rm -f test.js12
rm 'test.js'13
14
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)15
$ ls16
index.html main.js style.css17

Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git revert HEAD~4
[master 4a9c170] Revert "rm main.js"
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 main.js
6
6
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git revert HEAD~43
[master 4a9c170] Revert "rm main.js"4
1 file changed, 0 insertions(+), 0 deletions(-)5
delete mode 100644 main.js6
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git reflog
4a9c170 (HEAD -> master) HEAD@{0}: revert: Revert "rm main.js"
39d849d HEAD@{1}: revert: Revert "Revert "Revert "rm main.js"""
0c6e419 HEAD@{2}: revert: Revert "Revert "rm main.js""
9847b18 HEAD@{3}: revert: Revert "rm main.js"
119efc5 HEAD@{4}: commit: rm main.js
9adcd90 HEAD@{5}: commit: rm main.js
5715233 HEAD@{6}: commit: add style.css
f0f236e HEAD@{7}: commit (initial): add index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git revert HEAD~6
[master 66521e2] Revert "add style.css"
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html
25
25
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git reflog3
4a9c170 (HEAD -> master) HEAD@{0}: revert: Revert "rm main.js"4
39d849d HEAD@{1}: revert: Revert "Revert "Revert "rm main.js"""5
0c6e419 HEAD@{2}: revert: Revert "Revert "rm main.js""6
9847b18 HEAD@{3}: revert: Revert "rm main.js"7
119efc5 HEAD@{4}: commit: rm main.js8
9adcd90 HEAD@{5}: commit: rm main.js9
5715233 HEAD@{6}: commit: add style.css10
f0f236e HEAD@{7}: commit (initial): add index.html11
12
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)13
$ ls14
index.html style.css15
16
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)17
$ git revert HEAD~618
[master 66521e2] Revert "add style.css"19
1 file changed, 0 insertions(+), 0 deletions(-)20
delete mode 100644 style.css21
22
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)23
$ ls24
index.html25
回撤是对某次操作的回撤
因为误操作,但某次add了文件到版本库,一回撤revert,本地和版本库的也给我删掉了(不爽),我想保存本地工作区的。
这里可以用 git rm --cached 文件名 删除版本库里面的
git reset HEAD --soft 之前提交的日志也会没有!!!!
不再保留该点之后的 将HEAD指针直接指向某个版本,将内容回撤到暂存区
回撤到暂存区,没有被commit soft
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git reset HEAD~11 --soft
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html main.js style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: main.js
15
15
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git reset HEAD~11 --soft3
4
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)5
$ ls6
index.html main.js style.css7
8
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)9
$ git status10
On branch master11
Changes to be committed:12
(use "git reset HEAD <file>..." to unstage)13
14
new file: main.js15
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html main.js style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
5715233 (HEAD -> master) add style.css
f0f236e add index.html
9
9
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ ls3
index.html main.js style.css4
5
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)6
$ git log --oneline7
5715233 (HEAD -> master) add style.css8
f0f236e add index.html9
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
5715233 (HEAD -> master) add style.css
f0f236e add index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: main.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git commit -m 'add main.js'
[master a461304] add main.js
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 main.js
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
a461304 (HEAD -> master) add main.js
5715233 add style.css
f0f236e add index.html
26
26
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git log --oneline3
5715233 (HEAD -> master) add style.css4
f0f236e add index.html5
6
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)7
$ git status8
On branch master9
Changes to be committed:10
(use "git reset HEAD <file>..." to unstage)11
12
new file: main.js13
14
15
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)16
$ git commit -m 'add main.js'17
[master a461304] add main.js18
1 file changed, 0 insertions(+), 0 deletions(-)19
create mode 100644 main.js20
21
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)22
$ git log --oneline23
a461304 (HEAD -> master) add main.js24
5715233 add style.css25
f0f236e add index.html26
回撤到工作区 mixed 之前提交的日志也会没有!!!!
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git reset HEAD^ --mixed
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html main.js style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
main.js
nothing added to commit but untracked files present (use "git add" to track)
17
17
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git reset HEAD^ --mixed3
4
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)5
$ ls6
index.html main.js style.css7
8
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)9
$ git status10
On branch master11
Untracked files:12
(use "git add <file>..." to include in what will be committed)13
14
main.js15
16
nothing added to commit but untracked files present (use "git add" to track)17
回撤到某个版本,之后的操作暂存区,工作区都没有,【不能修复】
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git reset HEAD^ --hard
HEAD is now at 5715233 add style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ ls
index.html style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
nothing to commit, working tree clean
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
5715233 (HEAD -> master) add style.css
f0f236e add index.html
20
20
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git reset HEAD^ --hard3
HEAD is now at 5715233 add style.css4
5
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)6
$ ls7
index.html style.css8
9
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)10
$ git status11
On branch master12
nothing to commit, working tree clean13
14
15
16
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)17
$ git log --oneline18
5715233 (HEAD -> master) add style.css19
f0f236e add index.html20
分支

Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
nothing to commit, working tree clean
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ cat index.html
git first
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git checkout DEV
Switched to branch 'DEV'
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (DEV)
$ LS
index.html main.js style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (DEV)
$ CAT in
CAT: in: No such file or directory
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (DEV)
$ cat index.html
git first
git hub
26
26
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git status3
On branch master4
nothing to commit, working tree clean5
6
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)7
$ cat index.html8
git first9
10
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)11
$ git checkout DEV12
Switched to branch 'DEV'13
14
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (DEV)15
$ LS16
index.html main.js style.css17
18
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (DEV)19
$ CAT in20
CAT: in: No such file or directory21
22
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (DEV)23
$ cat index.html24
git first25
git hub26
合并
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git branch
dev
* master
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git merge dev
Updating 8bf231b..e574e73
Fast-forward
index.html | 1 +
1 file changed, 1 insertion(+)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
nothing to commit, working tree clean
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
e574e73 (HEAD -> master, dev) modify index.html
8bf231b add main.js
5715233 add style.css
f0f236e add index.html
24
24
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git branch3
dev4
* master5
6
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)7
$ git merge dev8
Updating 8bf231b..e574e739
Fast-forward10
index.html | 1 +11
1 file changed, 1 insertion(+)12
13
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)14
$ git status15
On branch master16
nothing to commit, working tree clean17
18
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)19
$ git log --oneline20
e574e73 (HEAD -> master, dev) modify index.html21
8bf231b add main.js22
5715233 add style.css23
f0f236e add index.html24
合并分支,冲突时,需要解决冲突,并add ,commit
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git merge dev
Auto-merging readme.md
CONFLICT (add/add): Merge conflict in readme.md
Automatic merge failed; fix conflicts and then commit the result.
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master|MERGING)
$ git commit -m "merge dev"
error: Committing is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
U readme.md
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master|MERGING)
$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: readme.md
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master|MERGING)
$ git add readme.md
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master|MERGING)
$ git commit -m "merge dev"
[master 6d247aa] merge dev
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
nothing to commit, working tree clean
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
6d247aa (HEAD -> master) merge dev
7de3869 modify inde.html
40ab7c7 add readme.md
82721b0 (dev) add readme.md
74b1c6e modfy content
e574e73 modify index.html
8bf231b add main.js
5715233 add style.css
f0f236e add index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ cat readme.md
branch dev
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
57
57
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git merge dev3
Auto-merging readme.md4
CONFLICT (add/add): Merge conflict in readme.md5
Automatic merge failed; fix conflicts and then commit the result.6
7
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master|MERGING)8
$ git commit -m "merge dev"9
error: Committing is not possible because you have unmerged files.10
hint: Fix them up in the work tree, and then use 'git add/rm <file>'11
hint: as appropriate to mark resolution and make a commit.12
fatal: Exiting because of an unresolved conflict.13
U readme.md14
15
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master|MERGING)16
$ git status17
On branch master18
You have unmerged paths.19
(fix conflicts and run "git commit")20
(use "git merge --abort" to abort the merge)21
22
Unmerged paths:23
(use "git add <file>..." to mark resolution)24
25
both added: readme.md26
27
no changes added to commit (use "git add" and/or "git commit -a")28
29
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master|MERGING)30
$ git add readme.md31
32
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master|MERGING)33
$ git commit -m "merge dev"34
[master 6d247aa] merge dev35
36
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)37
$ git status38
On branch master39
nothing to commit, working tree clean40
41
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)42
$ git log --oneline43
6d247aa (HEAD -> master) merge dev44
7de3869 modify inde.html45
40ab7c7 add readme.md46
82721b0 (dev) add readme.md47
74b1c6e modfy content48
e574e73 modify index.html49
8bf231b add main.js50
5715233 add style.css51
f0f236e add index.html52
53
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)54
$ cat readme.md55
branch dev56
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)57
非快速合并,可以有合并分支的log
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git merge dev --no-ff -m "merge dev class --no-ff"
Merge made by the 'recursive' strategy.
index.html | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
909293b (HEAD -> master) merge dev class --no-ff
c75563d (dev) add class container
6d247aa merge dev
7de3869 modify inde.html
40ab7c7 add readme.md
82721b0 add readme.md
74b1c6e modfy content
e574e73 modify index.html
8bf231b add main.js
5715233 add style.css
f0f236e add index.html
21
21
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git merge dev --no-ff -m "merge dev class --no-ff"3
Merge made by the 'recursive' strategy.4
index.html | 6 +++++-5
1 file changed, 5 insertions(+), 1 deletion(-)6
7
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)8
$ git log --oneline9
909293b (HEAD -> master) merge dev class --no-ff10
c75563d (dev) add class container11
6d247aa merge dev12
7de3869 modify inde.html13
40ab7c7 add readme.md14
82721b0 add readme.md15
74b1c6e modfy content16
e574e73 modify index.html17
8bf231b add main.js18
5715233 add style.css19
f0f236e add index.html20
21
当我们在自己的dev分支开发时,项目经理说bug出现需要修改。
此时,自己在开发的分支还没完。修改完bug,不好直接提交。去master再克隆一份,查找修改又太麻烦。
通过dev 分支修改bug后add, commit
但在切换到master 分支时,dev 分支下被修改的内容也会导致master里面被修改
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git add readme.md
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git commit -m "modify dev2 readme.md"
[dev2 c067bc9] modify dev2 readme.md
1 file changed, 1 insertion(+), 1 deletion(-)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git checkout master
Switched to branch 'master'
M index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (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: index.html
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git merge dev2 --no-ff -m "merge dev2 readme.md test"
Merge made by the 'recursive' strategy.
readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (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: index.html
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git checkout -b bug_001
Switched to a new branch 'bug_001'
M index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ git branch
* bug_001
dev2
master
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ git status
On branch bug_001
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: index.html
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ git checkout dev2
Switched to branch 'dev2'
M index.html
75
75
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)2
$ git add readme.md3
4
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)5
$ git commit -m "modify dev2 readme.md"6
[dev2 c067bc9] modify dev2 readme.md7
1 file changed, 1 insertion(+), 1 deletion(-)8
9
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)10
$ git checkout master11
Switched to branch 'master'12
M index.html13
14
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)15
$ git status16
On branch master17
Changes not staged for commit:18
(use "git add <file>..." to update what will be committed)19
(use "git checkout -- <file>..." to discard changes in working directory)20
21
modified: index.html22
23
no changes added to commit (use "git add" and/or "git commit -a")24
25
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)26
$ git merge dev2 --no-ff -m "merge dev2 readme.md test"27
Merge made by the 'recursive' strategy.28
readme.md | 2 +-29
1 file changed, 1 insertion(+), 1 deletion(-)30
31
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)32
$ git status33
On branch master34
Changes not staged for commit:35
(use "git add <file>..." to update what will be committed)36
(use "git checkout -- <file>..." to discard changes in working directory)37
38
modified: index.html39
40
no changes added to commit (use "git add" and/or "git commit -a")41
42
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)43
$44
45
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)46
$47
48
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)49
$ git checkout -b bug_00150
Switched to a new branch 'bug_001'51
M index.html52
53
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)54
$ git branch55
* bug_00156
dev257
master58
59
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)60
$ git status61
On branch bug_00162
Changes not staged for commit:63
(use "git add <file>..." to update what will be committed)64
(use "git checkout -- <file>..." to discard changes in working directory)65
66
modified: index.html67
68
no changes added to commit (use "git add" and/or "git commit -a")69
70
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)71
$ git checkout dev272
Switched to branch 'dev2'73
M index.html74
75
git stash 将dev的修改封存起来,
再切换到bug分支,就不会提示有未被add 的文件
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git stash
Saved working directory and index state WIP on dev2: c067bc9 modify dev2 readme.md
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git stash
No local changes to save
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git checkout bug_001
Switched to branch 'bug_001'
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ git status
On branch bug_001
nothing to commit, working tree clean
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ ls
index.html main.js readme.md style.css
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ cat index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>git-test-dev</title>
</head>
<body>
git test dev2
<div class="container">
</div>
</body>
</html>
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
##bug 修改
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ git status
On branch bug_001
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")
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ git add readme.md
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ git commit -m "bug fix on bug brabch"
[bug_001 e29c5c9] bug fix on bug brabch
1 file changed, 1 insertion(+), 1 deletion(-)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)
$ git checkout master
Switched to branch 'master'
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git status
On branch master
nothing to commit, working tree clean
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git merge bug_001 --no-ff -m "merge bug_001"
Merge made by the 'recursive' strategy.
readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git log --oneline
5b08413 (HEAD -> master) merge bug_001
e29c5c9 (bug_001) bug fix on bug brabch
c694478 merge dev2 readme.md test
c067bc9 (dev2) modify dev2 readme.md
909293b merge dev class --no-ff
c75563d add class container
6d247aa merge dev
7de3869 modify inde.html
40ab7c7 add readme.md
82721b0 add readme.md
74b1c6e modfy content
e574e73 modify index.html
8bf231b add main.js
5715233 add style.css
f0f236e add index.html
101
101
1
2
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)3
$ git stash4
Saved working directory and index state WIP on dev2: c067bc9 modify dev2 readme.md5
6
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)7
$ git stash8
No local changes to save9
10
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)11
$ git checkout bug_00112
Switched to branch 'bug_001'13
14
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)15
$ git status16
On branch bug_00117
nothing to commit, working tree clean18
19
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)20
$ ls21
index.html main.js readme.md style.css22
23
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)24
$ cat index.html25
<!doctype html>26
<html lang="en">27
<head>28
<meta charset="UTF-8">29
<meta name="viewport"30
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">31
<meta http-equiv="X-UA-Compatible" content="ie=edge">32
<title>git-test-dev</title>33
</head>34
<body>35
git test dev236
37
<div class="container">38
39
</div>40
</body>41
</html>42
43
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)44
45
46
47
48
49
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)50
$ git status51
On branch bug_00152
Changes not staged for commit:53
(use "git add <file>..." to update what will be committed)54
(use "git checkout -- <file>..." to discard changes in working directory)55
56
modified: readme.md57
58
no changes added to commit (use "git add" and/or "git commit -a")59
60
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)61
$ git add readme.md62
63
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)64
$ git commit -m "bug fix on bug brabch"65
[bug_001 e29c5c9] bug fix on bug brabch66
1 file changed, 1 insertion(+), 1 deletion(-)67
68
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (bug_001)69
$ git checkout master70
Switched to branch 'master'71
72
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)73
$ git status74
On branch master75
nothing to commit, working tree clean76
77
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)78
$ git merge bug_001 --no-ff -m "merge bug_001"79
Merge made by the 'recursive' strategy.80
readme.md | 2 +-81
1 file changed, 1 insertion(+), 1 deletion(-)82
83
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)84
$ git log --oneline85
5b08413 (HEAD -> master) merge bug_00186
e29c5c9 (bug_001) bug fix on bug brabch87
c694478 merge dev2 readme.md test88
c067bc9 (dev2) modify dev2 readme.md89
909293b merge dev class --no-ff90
c75563d add class container91
6d247aa merge dev92
7de3869 modify inde.html93
40ab7c7 add readme.md94
82721b0 add readme.md95
74b1c6e modfy content96
e574e73 modify index.html97
8bf231b add main.js98
5715233 add style.css99
f0f236e add index.html100
101
回到dev,还原状态
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git checkout dev2
Switched to branch 'dev2'
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git stash pop
On branch dev2
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: index.html
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (786d6cbea52dfb94093bb015ee988e2cf10ab827)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git stash
Saved working directory and index state WIP on dev2: c067bc9 modify dev2 readme.md
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git stash list
stash@{0}: WIP on dev2: c067bc9 modify dev2 readme.md
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git stash pop apply stash@{0}
Too many revisions specified: 'apply' 'stash@{0}'
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git stash list
stash@{0}: WIP on dev2: c067bc9 modify dev2 readme.md
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git stash apply stash@{0}
On branch dev2
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: index.html
no changes added to commit (use "git add" and/or "git commit -a")
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
45
45
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)2
$ git checkout dev23
Switched to branch 'dev2'4
5
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)6
$ git stash pop7
On branch dev28
Changes not staged for commit:9
(use "git add <file>..." to update what will be committed)10
(use "git checkout -- <file>..." to discard changes in working directory)11
12
modified: index.html13
14
no changes added to commit (use "git add" and/or "git commit -a")15
Dropped refs/stash@{0} (786d6cbea52dfb94093bb015ee988e2cf10ab827)16
17
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)18
$ git stash19
Saved working directory and index state WIP on dev2: c067bc9 modify dev2 readme.md20
21
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)22
$ git stash list23
stash@{0}: WIP on dev2: c067bc9 modify dev2 readme.md24
25
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)26
$ git stash pop apply stash@{0}27
Too many revisions specified: 'apply' 'stash@{0}'28
29
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)30
$ git stash list31
stash@{0}: WIP on dev2: c067bc9 modify dev2 readme.md32
33
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)34
$ git stash apply stash@{0}35
On branch dev236
Changes not staged for commit:37
(use "git add <file>..." to update what will be committed)38
(use "git checkout -- <file>..." to discard changes in working directory)39
40
modified: index.html41
42
no changes added to commit (use "git add" and/or "git commit -a")43
44
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)45
封存自己的修改。创建分支,修改bug,合并分支。提交
反回自己的dev,还原状态
特性分支
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git checkout -b feature_001
Switched to a new branch 'feature_001'
M index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (feature_001)
$ git checkout master
Switched to branch 'master'
M index.html
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)
$ git branch -d feature_001
Deleted branch feature_001 (was c067bc9).
14
14
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)2
$ git checkout -b feature_0013
Switched to a new branch 'feature_001'4
M index.html5
6
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (feature_001)7
$ git checkout master8
Switched to branch 'master'9
M index.html10
11
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (master)12
$ git branch -d feature_00113
Deleted branch feature_001 (was c067bc9).14
root
git commit -am “”
已经被add 过的文件,被修改后,需要再次add ,commit
而git commit -am “” 可以跳过add ,直接提交最新的更新
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git status
On branch dev2
Untracked files:
(use "git add <file>..." to include in what will be committed)
two-in-one.txt
nothing added to commit but untracked files present (use "git add" to track)
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git add two-in-one.txt
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ echo test>two-in-one.txt
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git status
On branch dev2
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: two-in-one.txt
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: two-in-one.txt
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git commit -am "add two in one"
warning: LF will be replaced by CRLF in two-in-one.txt.
The file will have its original line endings in your working directory
[dev2 6bd373a] add two in one
1 file changed, 1 insertion(+)
create mode 100644 two-in-one.txt
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git status
On branch dev2
nothing to commit, working tree clean
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)
$ git log --oneline
6bd373a (HEAD -> dev2) add two in one
7f17b42 add style.css link file
c067bc9 modify dev2 readme.md
909293b merge dev class --no-ff
c75563d add class container
6d247aa merge dev
7de3869 modify inde.html
40ab7c7 add readme.md
82721b0 add readme.md
74b1c6e modfy content
e574e73 modify index.html
8bf231b add main.js
5715233 add style.css
f0f236e add index.html
x
61
1
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)2
$ git status3
On branch dev24
Untracked files:5
(use "git add <file>..." to include in what will be committed)6
7
two-in-one.txt8
9
nothing added to commit but untracked files present (use "git add" to track)10
11
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)12
$ git add two-in-one.txt13
14
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)15
$ echo test>two-in-one.txt16
17
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)18
$ git status19
On branch dev220
Changes to be committed:21
(use "git reset HEAD <file>..." to unstage)22
23
new file: two-in-one.txt24
25
Changes not staged for commit:26
(use "git add <file>..." to update what will be committed)27
(use "git checkout -- <file>..." to discard changes in working directory)28
29
modified: two-in-one.txt30
31
32
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)33
$ git commit -am "add two in one"34
warning: LF will be replaced by CRLF in two-in-one.txt.35
The file will have its original line endings in your working directory36
[dev2 6bd373a] add two in one37
1 file changed, 1 insertion(+)38
create mode 100644 two-in-one.txt39
40
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)41
$ git status42
On branch dev243
nothing to commit, working tree clean44
45
Administrator@lewenbook MINGW64 /e/PlayData/git/demo1 (dev2)46
$ git log --oneline47
6bd373a (HEAD -> dev2) add two in one48
7f17b42 add style.css link file49
c067bc9 modify dev2 readme.md50
909293b merge dev class --no-ff51
c75563d add class container52
6d247aa merge dev53
7de3869 modify inde.html54
40ab7c7 add readme.md55
82721b0 add readme.md56
74b1c6e modfy content57
e574e73 modify index.html58
8bf231b add main.js59
5715233 add style.css60
f0f236e add index.html61
浙公网安备 33010602011771号