版本控制工具大概有:
RCS单机版
CVS、SVN集中式版本控制系统
GIT分布式版本控制系统
这里介绍GIT,它四大位置:本地代码工作区---待提交列表staging area---本地仓库local repo---远程仓库remote repo(git服务器)。从左往右是上传代码,从右往左是下载代码。
备注1:git比svn多了待提交列表。
备注2:最好本地一个分支、远程一个分支,没有必要搞多个分支,只有每个人合并的时候就要花很多时间。
备注3:帮git当作高级svn来用。
备注4:更改服务器上的commit时间点这个不要做。
备注5:github公开的是免费的,私有的是收费的。国有的有coding.net等。
一、安装git
[root@test ~]# yum -y install git
二、git基础设置
设置用户名(可以针对单个仓库设置,更改.git/config文件): [root@test ~]# git config --global user.name "gxm" 设置用户邮箱(可以针对单个仓库设置,更改.git/config文件): [root@test ~]# git config --global user.email "[email protected]" 查看设置: [root@test ~]# git config --list
三、git命令帮助
[root@test ~]# git help [root@test ~]# git help 指定指令----比如git help add
四、初始化一个新的git仓库
root@test ~]# mkdir demo [root@test ~]# cd demo/ [root@test demo]# git init Initialized empty Git repository in /root/demo/.git/ [root@test demo]# ls -ah . .. .git
五、向仓库中添加新的文件,并提交(先add增加的暂存区,然后再提交到仓库。勤使用git status和git log)
[root@test demo]# touch readme [root@test demo]# vi hello.py [root@test demo]# git status # On branch master # # Initial commit # # Untracked files: # (use "git add..." to include in what will be committed) # # hello.py # readme nothing added to commit but untracked files present (use "git add" to track) [root@test demo]# git add readme [root@test demo]# git add hello.py [root@test demo]# git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached ..." to unstage) # # new file: hello.py # new file: readme # [root@test demo]# git commit -m "add readme hello" [master (root-commit) 542d06d] add readme hello 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 hello.py create mode 100644 readme [root@test demo]# git status # On branch master nothing to commit (working directory clean) [root@test demo]# git log commit 542d06da8b9dd3354d6307f1d78016671df249f1 这个是校验码 Author: gxm Date: Wed Jan 31 17:27:57 2018 +0800 add readme hello
备注:可以跳过暂存阶段,直接git commit -a -m "test",不建议这种方法,如果是新创建的文件,这个命令不会提交上去。
六、删除文件
文件系统方式删除文件
[root@test demo]# rm readme rm:是否删除普通空文件 "readme"?y [root@test demo]# git rm readme rm 'readme' [root@test demo]# git commit -m "delete readme" [master dbb390a] delete readme 1 files changed, 1 deletions(-) delete mode 100644 readme [root@test demo]# git log commit dbb390aadb864796c827b49504969d334d7466ba Author: gxmDate: Wed Jan 31 17:34:38 2018 +0800 delete readme commit 542d06da8b9dd3354d6307f1d78016671df249f1 Author: gxm Date: Wed Jan 31 17:27:57 2018 +0800 add readme hello
七、重命名文件
[root@test demo]# git mv hello.py hellogxm.py [root@test demo]# git commit -m "rename hello.py" [root@test demo]# git log commit b89ea41790aebc686a2a48973d02b14b989c26ea Author: gxmDate: Wed Jan 31 17:38:39 2018 +0800 rename hello.py commit dbb390aadb864796c827b49504969d334d7466ba Author: gxm Date: Wed Jan 31 17:34:38 2018 +0800 delete readme commit 542d06da8b9dd3354d6307f1d78016671df249f1 Author: gxm Date: Wed Jan 31 17:27:57 2018 +0800 add readme hello
实际上执行了这3条命令:
[root@test demo]# mv hello.py hellogxm.py [root@test demo]# git rm hellogxm.py [root@test demo]# git add hellogxm.py
八、查看历史详细日志
[root@test demo]# git show dbb390aadb864796c827b49504969d334d7466ba commit dbb390aadb864796c827b49504969d334d7466ba Author: gxmDate: Wed Jan 31 17:34:38 2018 +0800 delete readme diff --git a/readme b/readme deleted file mode 100644 index e69de29..0000000
九、撤销本地刚才的commit
[root@test demo]# git reset --soft HEAD~1
比较柔和的撤销,如果不用--soft,就会直接放在本地代码中,如果用--soft就放在提交区。
十、如果撤销本地没有提交的改动
比如改了一个文件后悔了,在暂停区的时候,用chechout撤销
[root@test demo]# git checkout -- 文件
十一、忽略提交一些文件
很多文件步应该放在git版本控制里面的,创建一个vi .gitignore文件(这个文件在git项目的根目录)
比如忽略,比如
[root@test demo]# vi .gitignore *yml log/*.log
十二、本地分支的创建、删除和切换
查看分支:git branch 创建分支:git branch 分支名 切换分支:git checkout 分支名 删除分支:git branch -d 分支名
十三、本地分支的合并
git checkout master 先切换master,然后把下面的分支合并过来 git merge 分支名
十四、在远程创建仓库,往远程上传或者交推代码(github方式、国内的coding.net是同样的方式,选择一种就可以)
全世界最大的git远程仓库github。
备注1:如果本地已经创建了本地库,直接执行红框中的命令。
备注2:如果本地没有创建本地库,麻烦先创建下,并提交文件,即用红框上面那几行命令。
备注3:如果远程新建仓库的时候默认会生成文件,而本地没有,则建议先git pull origin master拉下来,然后再执行上面的命令。
备注4:git push -u origin master origin这个相当于远程服务器的别名,在.git/config文件中定义,其实master后面还有个:master,即把本地的master推送到远程的master。
十五、下载或拉取代码到本地、上传或推代码到远程(多push和pull,要不多人协同开发的时候容易产生合并冲突)
1、第一次下载。
git clone github提供的ssh或http链接 cd 目录 git log查看历史提交记录 vi .git/config更改这个文件加 [user] name = test email = [email protected]
2、更改文件并重新提交。
更改文件并提交到远程库 git add 文件 git commit -m "描述" git push origin master
3、再次下载
git pull origin master
十六、合并冲突
就是2个人同事改了一个文件或相同的行,只有后者提交的时候会提示冲突。会提示merge failed失败,提示手动操作。用git status查看是哪个文件冲突,然后修改下。
<<<<<<<和>>>>>>之前的内容需要我们手动合并的,合并后add、commint后再push。