git 学习笔记
git 管理 下的文件分为三种状态:
- 已修改
- 已暂存
- 已提交
以上三种状态分别对应工作区、暂存区、版本库
git 常用命令
#git 配置提交者的用户名和邮箱
git config --global user.name "example"
git config --global user.email "example.example.com"
#global是用来设置登录电脑用户层级
#local是用来配置项目级别的
#system是用来配置全局级别的
#将带删除的文件或修改从暂存区恢复到工作区
git reset HEAD <file>
#将工作区的丢弃修改
git checkout -- <file>
#查看日志
git log
#查看最近n条日志:
git log -n
#以一行的形式查看日志:
git log --pretty=oneline
#git 查看帮助
git help config
git config --help
man git -config
git 修改备注,假设前面写的备注不准确,可以使用如下命令进行更正:
git commit --amend -m "新的备注"
当我们在git 重命名一个文件时发生了什么?
从上面的一系列执行过程可以看出git mv oldname newname命名实际上做了两件事:
- 删除原来的
- 复制一个新的
用git mv命令,git还帮着做了一件事就是把这些改变纳入到了git的暂存区。如果想将重命名回退回来,可以通过上面的一系列命令实现。实际上可以看出在最后执行rm test.txt 命令,myGit目录下应该是有两个文件test.txt和test1.txt。
#git 查看分支:
git branch
#创建新分支:
git branch new_branch_name
#切换分支
git checkout branch_name
#在输入很长的命令时,可以通过以下两个命令切换光标到行首和行尾
CTRL+A
CTRL+E
vim中也可以通过SHIFT+A快速切换到行尾
git rm和git mv命令实际上都是调用了linux的命令rm和mv,只是多加了一步操作将这些修改纳入暂存区。
2019年1月20日更新:
#git删除分支的语法为:
git checkout -d branch_name
#需要说明的是上面的-d仅仅能删除没有任何更改的分支,如果有修改那么需要用-D来强制删除
#将branch_name 合并到当前分支
git merge branch_name
#HEAD指向当前的分支
#master指向mster分支上最近的提交
#解决冲突
#现在有两个分支master分支和develope分支,有一个文件test2.txt,里面只有一行hello java
#①在develope分支中的test2.txt分支中添加一行insert a line into develope branch“然后提交
#②在master分支中到的test2.txt分支中添加一行insert a line into master branch 然后提交
#③在master分支上将develope分支合并到master分支会出现冲突
#④手动解决test2.txt产生的冲突,打开test2.txt解决冲突
#⑤git add 和git commit 提交修改即可
root@chun:/opt/gitLearn# git merge develope
自动合并 test2.txt
冲突(内容):合并冲突于 test2.txt
自动合并失败,修正冲突然后提交修正的结果。
root@chun:/opt/gitLearn# git
Hello java
<<<<<<< HEAD
insert a line into master branch.
=======
insert a line into develope branch.
>>>>>>> develope
~
~
~
"test2.txt" 6L, 119C
root@chun:/opt/gitLearn# vim test2.txt
root@chun:/opt/gitLearn# git status
位于分支 master
您有尚未合并的路径。
(解决冲突并运行 "git commit")
未合并的路径:
(使用 "git add <文件>..." 标记解决方案)
双方修改: test2.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
root@chun:/opt/gitLearn# git add test2.txt
root@chun:/opt/gitLearn# git status
位于分支 master
所有冲突已解决但您仍处于合并中。
(使用 "git commit" 结束合并)
要提交的变更:
修改: test2.txt
root@chun:/opt/gitLearn# git commit
[master 2512693] Merge branch 'develope'
root@chun:/opt/gitLearn# git status
位于分支 master
无文件要提交,干净的工作区
root@chun:/opt/gitLearn#
下面分别是develope、master分支merge之前、master分支merge之后的日志。
#develop 分支的日志
commit e5bfb98be95575f4e2d079eea5c5bc1b691d64c0
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 13:07:17 2019 +0800
insert a line into develope branch
commit d921435e03831441a5e602b53b968f5925d29ba6
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 13:05:21 2019 +0800
create a file
commit 55acd66ba88321a23f7aca9836161853e7ec1e4d
Merge: c2c3957 ce9be6b
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 12:59:41 2019 +0800
Merge branch 'master' into develope
commit ce9be6bf246e86e912d590f866de80b9b9cd380a
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 12:56:47 2019 +0800
#master分支的日志
commit b19da91003cb0195661a3e122ed13f077b2669e9
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 13:09:34 2019 +0800
insert a line into master branch
commit d921435e03831441a5e602b53b968f5925d29ba6
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 13:05:21 2019 +0800
create a file
commit 55acd66ba88321a23f7aca9836161853e7ec1e4d
Merge: c2c3957 ce9be6b
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 12:59:41 2019 +0800
Merge branch 'master' into develope
commit ce9be6bf246e86e912d590f866de80b9b9cd380a
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 12:56:47 2019 +0800
#master分支合并完develope分支的日志
commit 2512693b44eb5657af90c7c10d5206b182e415b8
Merge: b19da91 e5bfb98
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 13:31:02 2019 +0800
Merge branch 'develope'
commit b19da91003cb0195661a3e122ed13f077b2669e9
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 13:09:34 2019 +0800
insert a line into master branch
commit e5bfb98be95575f4e2d079eea5c5bc1b691d64c0
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 13:07:17 2019 +0800
insert a line into develope branch
commit d921435e03831441a5e602b53b968f5925d29ba6
Author: chunbs <chunbs@ml.com>
Date: Sun Jan 20 13:05:21 2019 +0800