git结构:工作区-->git add-->暂存区-->git commit-->本地库
1.本地库初始化
- mkdir :创建目录当做git库的根目录
- git init:初始化代码库
- 不要手欠乱动这些目录
2.设置签名
- 设置本地库用户名和email,用来区分不同开发人员的身份.这里设置的信息与远程库账号密码无关。
- 项目级别/仓库级别:仅在当前本地库范围内有效
- git config user.name 用户名
- git config user.email 邮箱
- 信息保存在库目录/.git/config配置文件中
- 系统用户级别:当前系统用户范围,通常我们使用这个级别
- git config --global user.name 用户名
- git config --global user.email 邮箱
- 信息保存位置:~/.gitconfig文件里
- 备注
- 项目/库权限优先于系统权限
- 如果只有系统用户级别的签名,就以系统级别签名为准
- 二者都没有是不允许的
3.基本操作
- 查看状态
- git status : 查看工作区、暂存区的文件状态
- 添加操作
- git add [file name] : 将文件添加到暂存区
- git checkout --[file name] : 撤销修改
- 提交操作
- git commit [file name] : 提交前进入vim编辑器进行注解。vim【:set nu】显示行号【:wq】保存并退出。
- git commit -m "commit massage" [file name] : 在命令行进行注解,不在进入vim编辑器.
- 查看历史版本
- git log : 显示所有版本的详细信息。上翻页:空格 下翻页:B键 退出:Q键
- git log --pretty=oneline : 显示长id和注解
- git log --oneline : 显示短id和注解
- git reflog : 显示短id、HEAD和注解。通常情况下我们使用这个就可以了
- 版本前后移动
- git reset --hard <id号> : 推荐使用这种形式
- git reset --hard HEAD^ : 向后移动一个版本,这里的^可以有多个,有n个^表示向后移动n个版本。
- git reset --hard HEAD~[index] : ~后的数字是几就向后退回几个版本
- 备注:以上命令除了--hard还有--soft和--mixed参数,--soft仅仅在本地库移动HEAD指针。--mixed在本地库移动HEAD指针并重置暂存区。--hard在本地移动HEAD指针,并重置暂存区和工作区。
- 删除文件
- rm <文件> : 删除指定文件,并执行 git add 和git commit 进行彻底删除,不过我们可以从历史版本中找回文件。
- 文件比较
- git diff <文件> : 将工作区与暂存区中的文件进行比较,不填文件参数时可与多个文件进行比较
- git diff HEAD^ <文件> : 将工作区文件与本地库历史记录比较
- 分支
- git branch -v : 查看当前分支
- git branch <分支名> : 创建新分支
- git checkout <分支名> : 选择指定分支
- git commit -m "注解" branch <分支名> <文件> : 向指定分支提交文件
- 合并分支
- git checkout <A分支> : 将B分支合并到A分支,需要先切换到A分支,在进行后续操作。
- git merge <B分支> : 将B分支合并到A分支
- 解决冲突
- 当文件出现冲突时,
- 这时我们需要完成一下几个步骤,来解决文件冲突。
- 与同事沟通达成一致意见后,编辑文件将特殊字符删除
- git add 文件
- git commit -m "注解" : 注意这里提交时不能加文件名
- 当文件出现冲突时,
4.远程库操作
- github创建远程库
- 注册并登陆https://github.com
- 选择new repository
- 在页面中填入自定义库名,其他选项根据自己需求选择。
- 远程库本地别名化
- 对远程库操作时每次都粘贴远程地址比较麻烦,我们可以将远程地址在本地进行别名化。
- git remote -v : 查看现有别名
- git remote add <别名> <git远程库地址 > : 在本地创建远程库别名
- 推送到远程库
- git push <远程库地址> <分支> :<远程库地址>可用远程库别名代替
- 系统会提示输入账号
- 下载克隆 :我们假设当前在B用户机器上
- git clone <远程库地址>
- 下载前先准备好当做本地库的目录
- 下载时git已帮我们初始化了本地库
- 下载的克隆包括完整代码和别名等....
- 目前可以对本地库进行操作,但不能推送到远程库。如果要推送到远程库,需要将B用户邀请到团队。
- 邀请队友加入团队
- 登录github找到仓库里的settings-->Collaborators-->Add collaborator-->赋值邀请的连接发送给被邀请人,被邀请人用自己的账号访问连接,点击接受即可。这样被邀请人就可以将文件推送到远程库了。
- 如果要在推送时更换登录账号(Win10系统下)打开凭据管理器将github账号删除,再次推送时就可以输入其他账号了
- 拉取
- pull=fetch+merge
- git fetch <远程库> <远程分支> : 将远程库分支下载到本地,不做其他处理。
- git merge <远程库/远程分支> : 将远程库分支和并到当前分支
- git full <远程库> <远程分支> : 下载远程库分支并合并到当前分支
- 远程库冲突
- pull到本地,处理方法与本地冲突相同
- 远程协作
- ...远程协作基本都在github页进行这里暂不做说明