一、SVN和Git
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是目前世界上最先进的分布式版本控制系统。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
二、在WINDOWS上安装Git
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
三、Git操作
1、创建Git版本库
$ cd E:
$ cd 公司资料
$ mkdir Git仓库
$ cd Git仓库
2、显示当前目录
$ pwd
/e/公司资料/Git仓库
3、Git init把这个目录变成可以管理的仓库
$ git init
Initialized empty Git repository in E:/公司资料/Git仓库/.git/
4、用git add 添加到暂存区里面
$ git add test.txt
5、把文件提交到仓库
$ git commit -m "test.txt提交"
[master (root-commit) 6839a9c] test.txt提交
1 file changed, 1 insertion(+)
create mode 100644 test.txt
6、查看是否还有未提交文件
$ git status
On branch master
nothing to commit, working tree clean
7、查看两次提交文件的不同
$ git diff test.txt
diff --git a/test.txt b/test.txt
index 5f2f16b..c7dc989 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1 @@
-1111
+2222
8、历史版本查看
$ git log
commit 92ad86071889c2e76b4ad3969126a1e58d156492
Date: Mon Feb 13 18:17:00 2017 +0800
test
commit 6839a9cf5ba3a8be6e0f66a08b39469bdcc63520
Date: Mon Feb 13 17:52:42 2017 +0800
test.txt提交
$ git log --pretty=oneline
92ad86071889c2e76b4ad3969126a1e58d156492 test
6839a9cf5ba3a8be6e0f66a08b39469bdcc63520 test.txt提交
9、版本回退,如果是100,后面就接100
$ git reset --hard HEAD~1
HEAD is now at 6839a9c test.txt提交
10、查看版本号
$ git reflog
6839a9c HEAD@{0}: reset: moving to HEAD~1
92ad860 HEAD@{1}: commit: test
6839a9c HEAD@{2}: commit (initial): test.txt提交
11、根据版本号来恢复
$ git reset --hard 92ad860
HEAD is now at 92ad860 test
12、丢弃当前工作区的更改
$ git checkout -- test.txt
注意:
工作区的修改内容,执行这个命令会保持和版本库一致。
已经添加到暂存区后修改的,执行这个命令会和刚添加到暂存区的一致
git checkout -- test.txt中的--很重要,没有的话就变成创建分支了
13、删除文件
$ git add 1.txt
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: 1.txt
$ git commit -m "1.txt"
[master 7836738] 1.txt
1 file changed, 1 insertion(+)
create mode 100644 1.txt
$ git status
On branch master
nothing to commit, working tree clean
$ rm 1.txt
$ 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: 1.txt
no changes added to commit (use "git add" and/or "git commit -a")
##此时会回退
$ git checkout -- 1.txt
$ git status
On branch master
nothing to commit, working tree clean
$ rm 1.txt
##此时会删除
$ git commit -a
Aborting commit due to empty commit message.
四、远程仓库
首先你得有个Github的账号吧,哈哈
1、创建SSH KEY(先检查一下看有没有哈,没有再搞C:\Users\任冠亚\.ssh)
$ ssh-keygen -t rsa -C "your-mail"
2、登陆你的github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。
当然Tom就是我本人的英文名字了
3、添加一个远程仓库
添加完成后我们就有一个空仓库了
4、把本地库和线上库关联,然后推送本地代码
$ git remote add origin git@git.benmu-health.org:renguanya/test.git
$ git push -u origin master
现在远端就有东西了
Git push就是把当前分支master推送到远程。第一次推送的时候加上-u参数,Git不但会把本地master推送到远程,还会把本地和远程master关联起来。
现在你就有了你自己的Git仓库了,以后本地提交后,就运行这个push
$ git push origin master
5、如何把远程的代码get下来呢
$ git clone git@git.xxxxxxxxxxx
五、Git常用命令
Git基本常用命令如下:
git commit -- m “xx” -m后面接的是注释
git reset -- hard HEAD^ 或者 git reset –hard HEAD~
回退到上一个版本(如果想回退到100个版本,使用git reset –hard HEAD~100 )
git reflog 查看历史记录的版本号id
git checkout -- XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote add origin xxxx 关联一个远程库
git push -u origin master 把当前master分支推送到远程库
git clone xxxx 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git branch –d dev 删除dev分支
git branch name 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote 查看远程库的信息
git remote –v 查看远程库的详细信息
git push origin master Git会把master分支推送到远程库对应的远程分支上
PS:上述只是一些基本的知识,明天尽量接着更二
为了方便大家交流,本人开通了微信公众号,和QQ群291519319。喜欢技术的一起来交流吧