git的基本操作
1 git和svn
git是分布式版本控制工具,svn则是集中式的,版本都是放在集中服务器上,开发人员需要自己从中央服务器下载最新版本。
提到集中式和分布式,最容易想到的就是单点故障问题,如果集中服务器出现了故障,那么就不可用了,但是分布式就不会存在这种问题。
2 工作流程
- 将代码从远程仓库克隆到本地仓库
- 将本地仓库的代码checkout到工作区
- 如果想到提交代码,把工作区的代码提交到暂存区,然后提交到本地仓库
- 如果想和成员共享代码,将代码push到远程仓库
3 常用命令
3.1 本地仓库
-
修改设置用户名和邮箱,这个设置是保存在本地的git配置文件中
-
获取git仓库
- 克隆远程仓库
- 在文件夹执行git init命令,出现git隐藏文件夹代表创建成功
-
相关概念
- 版本库:git隐藏文件夹,里面存放了配置、日志、文件版本等信息
- 工作目录:包含git隐藏文件夹的目录为工作目录
- 暂存区:git中的index文件,也称为stage,临时保存修改文件的地方
-
工作目录文件的状态:untracked未被纳入版本控制,unmodified未修改,staged已暂存 git status查看
-
git add将untracked的加入stage,git reset取消暂存,git commit将暂存的内容提交到本地仓库,git rm删除文件:删除的只是工作区的文件,需要提交到本地仓库
-
忽略列表 在工作目录中创建gitignore隐藏文件夹,列出要忽略的文件模式
# no .a files *.a # but do track lib.a, even though you're ignoring .a files above !lib.a # only ignore the TODO file in the current directory, not subdir/TODO /TODO # ignore all files in the build/ directory build/ # ignore doc/notes.txt, but not doc/server/arch.txt doc/*.txt # ignore all .pdf files in the doc/ directory doc/**/*.pd
-
git log查看日志记录
3.2 远程仓库
- 查看远程仓库 git remote
- 添加远程仓库 git remote add 引用简写 url
- 从远程仓库克隆git clone [url]
- 移除无效的远程仓库 git remote rm只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
- 从远程仓库中抓取与拉取:git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge,合并git merge 仓库名/分支名;git pull 是从远程仓库获取最新版本并merge到本地仓库
- 推送到远程仓库git push [remote-name][branch-name]
3.3 分支
- master并无特殊之处,只是默认创建叫这个名字
- 新建分支git branch 分支名
- 切换分支 git checkout 分支名
- 推送至远程仓库分支 git push origin 分支名
- 合并分支 git merge 分支名:打开冲突的文件并修复冲突内容,最后执行git add命令来
标识冲突已解决 - 删除分支 git branch -d 分支名,强制删除-D 删除远程git push origin –d branchName
3.4 标签
- 创建git tab 标签名
- 每一次提交都会产生唯一的hash值
- 检出标签 git checkout -b branch tag 一般检出标签的时候会创建一个新的分支指向它
- 删除git tab -d 标签名 ;删除远程仓库标签git push origin:refs/tags/标签名
3 在idea使用git
-
.idea隐藏文件和.iml文件,target文件夹不应该交给git管理
-
Git报错-refusing to merge unrelated histories 加上--allow-unrelated-histories
-
存在冲突,但是我想合并两个分支:先修改冲突文件,git add git commit提交合并
-
解除版本控制,删除git文件夹和vcs配置文件
【Git】如何在Idea中将自己的项目添加到Git上并且推送到远程仓库?
SSH协议
基于一对秘钥,公钥放在需要访问的服务器