一、Git是什么?
一个分布式版本控制工具,与svn类似,但是功能比之强大,代码管理比较更安全,方便,不过上手难度相比svn要难一点点。代码分别在本地仓库和远程仓库管理。git命令格式可以参考linux命令
二、怎么用?
1.本地搭建
①.安装git
②.创建本地目录
③.进入目录,配置用户信息
it@hs MINGW64 ~/Desktop
$ git config --global user.name "***"
it@hs MINGW64 ~/Desktop
$ git config --global user.email "***@163.com"
④.初始化本地仓库 git init
$ git init
Initialized empty Git repository in D:/gitTest/.git/
⑤.提交本地文件 -m ' *** ' 是对本次修改的说明
it@hs MINGW64 /d/gitTest (master)
$ git add README.txt
it@hs MINGW64 /d/gitTest (master)
$ git commit -m 'README.txt提交'
[master (root-commit) 886a134] README.txt提交
1 file changed, 1 insertion(+)
create mode 100644 README.txt
add命令提交到本地暂存区(也就是当前.git中)
commit提交到工作区(也就是本地仓库)
⑥.提交修改
修改完文件后查看文件状态
it@hs MINGW64 /d/gitTest (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")
提示README.txt被修改了
查看被修改的内容是什么,添加了一行,内容为 1
it@hs MINGW64 /d/gitTest (master)
$ git diff README.txt
diff --git a/README.txt b/README.txt
index 93e5638..5f6d872 100644
--- a/README.txt
+++ b/README.txt
@@ -1 +1,2 @@
-hello world git
\ No newline at end of file
+hello world git
+1
\ No newline at end of file
查看文件内容
it@hs MINGW64 /d/gitTest (master)
$ cat README.txt
hello world git
add 和 commit后再次查看文件状态
it@hs MINGW64 /d/gitTest (master)
$ git status
On branch master
nothing to commit, working tree clean
本地已和本地仓库一致
⑦.修改撤销
在本地做了add或者commit操作以后需要放弃修改的内容时
git checkout --文件/分支
表示从远程仓库,重新clone一份修改之前的代码
如果已经push到了远程仓库那么只好做版本的回退
⑧.文件删除
it@hs MINGW64 /d/gitTest (master)
$ rm a.txt
如果误删了,可以通过 git checkout 重新下载一份;如果删除操作已经提交了,那么只能版本回退⑨.版本回退
git log查看版本信息
it@hs MINGW64 /d/gitTest (master)
$ git log
commit 5992bbcca64370b1bd0a74d90c3ba2244e29b14f
Author: hss <lfsfxy163@163.com>
Date: Sun Apr 23 19:09:37 2017 +0800
增加2
commit 765322dcbd1750cfc7dc1022aa211b3415e6b7d2
Author: hss <lfsfxy163@163.com>
Date: Sun Apr 23 19:08:03 2017 +0800
增加2
commit 502f1c0445275e9f4f972dcc058db36d95a525ec
Author: hss <lfsfxy163@163.com>
Date: Sun Apr 23 19:06:04 2017 +0800
READEME.txt添加1
内容有点多,而且无用信息比较多,简化版版本查看
it@hs MINGW64 /d/gitTest (master)
$ git log --pretty=oneline
5992bbcca64370b1bd0a74d90c3ba2244e29b14f 增加2
765322dcbd1750cfc7dc1022aa211b3415e6b7d2 增加2
502f1c0445275e9f4f972dcc058db36d95a525ec READEME.txt添加1
886a134a28c0a97332955a40ec8f747d683280ff README.txt提交
回退到上一个版本
it@hs MINGW64 /d/gitTest (master)
$ git reset --hard HEAD^
HEAD is now at 765322d 增加2
HEAD^^表示会退到上上个版本,依次类推
或者 git reset --hard 版本号
如果忘了版本号,可用以下命令查看
it@hs MINGW64 /d/gitTest (master)
$ git reflog
502f1c0 HEAD@{0}: reset: moving to HEAD^
765322d HEAD@{1}: reset: moving to HEAD^
5992bbc HEAD@{2}: commit: 增加2
765322d HEAD@{3}: commit: 增加2
502f1c0 HEAD@{4}: commit: READEME.txt添加1
886a134 HEAD@{5}: commit (initial): README.txt提交
每行前边内容即为版本号2.远程仓库(以gitHub为例)
①.首先需要把本地的SSH key放在gitHub上,文件位置在用户目录下的.ssh中
②.关联远程仓库
$git remote add origin git@github.com:<个人账号>/<远程仓库名称>.git
③.clone 或者 push
链接在gitHub账户中会生成
3.分支管理
分支之间与主分支的关系可以理解为平行的,互不干扰,不过一般在项目开发中都会以主分支为核心,此分支开发完毕后代码合并到主分支确定最后的代码
分支创建
$ git checkout -b develop
Switched to a new branch 'dev'
代表创建并切换到develop分支上
与下边两条语句作用相同
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
查看分支信息 *代表当前所在分支
$ git branch
* develop
master
切换分支
$ git checkout master
Switched to branch 'master'
删除分支
$ git branch -d develop
合并分支,把develop分支与当前分支内容合并
$ git merge develop
4.冲突处理
冲突出现是,远程仓库各个分支版本相同但是内容不同,在代码合并的时候出现同一文件在多个分支都被修改导致的冲突
Git在文件中一般用<<<<<<<
,=======
,>>>>>>>
标示出不同分支的内容
出现冲突后手动把冲突解决然后再次提交即可..
查看分支合并情况,分支树
$ git log --graph --pretty=oneline --abbrev-commit
这些命令目前可以应对git的使用了
三、小结
1.冲突能避免则避免,及早把冲突扼杀在摇篮中,这就要求每个开发人员规范的使用git,及时更新代码提交代码
2.分支要尽量的精简,太多分支出现冲突的可能性会大大增加...
3.更多高级的命令要在实践中去挖掘...