Git 版本控制系统是一个分布式的系统(与SVN不一样),可用于保存工程源代码及其历史状态的命令行工具。
Git下载地址:https://git-scm.com/downloads,安装之后,windows系统中会出现:
点击打开 Git Bash,出现:
这是属于命令行模式的界面,而Git GUI是属于图形界面形式。
1. 首先,可以简要设置:
git是属于分布式管理工具,需要输入用户名和邮箱作为标识来进行管理,所以可以在命令行输入下列的命令来设置:
git config --global user.name "XXXXXX" git config --global user.email "XXXXXXXXXX@163.com"
不过因为加入了 --global,所以是全局设置,不是单独设置(或单文件设置,如果要设置单文件或仓库,不用 --global)。
2. 其次,此命令行属于linux类型,基本可以用linux shell的命令,例如:ls, cd, mkdir, rm, cat 等。
3. 建立仓库的方法:
# 1. 直接本地建立仓库: cd some_directory #进入某个文件夹 git init #把该文件夹作为一个git仓库,会有.git隐藏文件出现 # 2. 从远程仓库克隆
cd some_directory #进入某个文件夹 git clone git@github.com:yuan0809/python_crawler.git #地址要修改成自己的,这里测试均用的是ssh形式,而不是下面的http形式 # 或者http形式:https://github.com/yuan0809/python_crawler.git
地址从这里来:
4. 建立本地仓库与远程仓库的连接:
当本地和远程都建立仓库之后,可以将两个仓库连在一起,其方法步骤如下:
- 生成ssh-key:
在用户主目录下(例如C:UsersAdministrator),看看有没有.ssh目录,如果没有,则:
ssh-keygen -t rsa –C “XXXXXXXX@163.com”
会出现两个文件:id_rsa和id_rsa.pub,id_rsa是私钥,id_rsa.pub是公钥。
- 登录网页github,在Settings中添加ssh-key:也就是复制 id_rsa.pub 中的内容到Add SSH keys的空白key栏中。
- 建立连接:
git remote add origin git@github.com:yuan0809/python_crawler.git
如果连接已存在,想删除,使用:git remote rm origin 进行删除即可(origin是连接名称)。
- 提交到远程库:
如果远程库是空的,则第一次同步本地库时,需要使用 -u;如果不是第一次push,则不再需要 -u 参数。
git push -u origin master
如果远程库不是空的,会报错 —— error: failed to push some refs to xxxxxx。
此时需要先把远程库同步pull到本地库,然后在本地修改等,再进行 git push:
git pull
* 附加:其实最好的建立远程库和本地库的方法,个人认为是 git clone直接克隆远程库来创建本地库;然后修改本地文件,可以直接 git push origin master;若出现 error:src refspec master does not match any错误,表明没有完成add和commit过程,需要按顺序完成。
5. 一次基本的提交修改流程:
# 如果是先本地建立了仓库,然后进行修改,则需要先 add,再 commit 到本地库 git add xxx.txt git commit -m "xxxx_log" # 如果是要提交到远程库,则: git add xxx.txt git commit -m "xxxx_log" git push origin master
6. 如果先修改了远程库,则必须要先同步到本地(git pull),先使本地库与远程库保持一致,再进行其他操作(个人认为:版本控制本身就是为了这个目的 —— 一致性);本地修改提交到远程库也是为了保持本地和远程数据的一致性。
7. 一些基本命令:
git init 把当前目录变成git仓库 git add xxxx 把xxxx文件添加到暂存区去。 git commit –m “xxxx_log” 提交文件,–m后是注释 git status 查看此时的仓库状态 git diff xx 查看XX文件修改了那些内容 git log 查看历史记录 git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本 (如果想回退到100个版本,使用git reset –hard HEAD~100 ) git reflog 查看历史记录的版本号id git checkout -- xx 把xx文件在工作区的修改全部撤销 git rm xxxx 删除xxxx文件 git remote add origin git@github.com:yuan0809/python_crawler.git 关联一个远程库 git push –u origin master 把当前master分支提交到远程库(第一次提交) git clone git@github.com:yuan0809/python_crawler.git 从远程库中克隆 git checkout –b test 创建test分支,并切换到test分支上 git branch 查看当前所有的分支 git checkout master 切换回master分支 git merge test 在当前的分支上合并test分支 git branch –d test 删除test分支 git branch name 创建分支 git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作 git stash list 查看所有被隐藏的文件列表 git stash apply 恢复被隐藏的文件,但是内容不删除 git stash drop 删除文件 git remote 查看远程库信息 git remote –v 查看远程库的详细信息 git push origin master 提交本地库
注:git pull 与 git fetch的关系
git pull = git fetch + git merge git pull 更新本地库成为最新的远程库状态 git fetch 并没有更新本地库,是更新了与远程库关联的commit id,然后用来merge
#
参考:
https://ishare.iask.sina.com.cn/f/12563920.html
https://www.runoob.com/w3cnote/git-five-minutes-tutorial.html