首先记住这些关键词:
- 两区,两库:工作区,暂存区,本地库,远程库
- git的初始化:git init,add添加,commit提交,push推送,merge 合并
add:使用了add命令就会这个文件就会交给git来管理了
git status:用来查看那状态,当然git status还能看到其他的信息,如他所在的分支,本地库有没有收到提交,git status 列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit)的文件
设置签名:目的是区分开发人员的身份,签名跟远程库的账号密码没有关系
- 分仓库签名:这个仓库范围有效
- 用户签名:这个用户是操作系统用户,如Tony_glo(主要用这个)
- 优先级问题:就近原则
当前目录下有. 和..:他两意义就在于 可以cd过去,cd . 和 cd ..
git add hello.txt 从暂存区撤销文件操作 git rm --cached hello.txt (而且他的提示也很有趣,你未追踪的时候他会提示你怎么添加到缓存区中,而你追踪了的时候则是告诉你怎样撤销)
提交commit就不像add那么方便啦,你每次提交都要备注一下,因为这是一个阶段性的东西,不然会退的时候分不出来,所以要标记一下要被提交的修改,git commit -m "edit by ybq"
拉个小伙伴:拉个人则是在github网站上settings的collaborators,再敲入对方的名字就可以添加了
pull request(拉请求):则是请求对方接收一下自己的代码,然后对方审核加修改后merage就行了,
有可被提交的修改,没有可被提交的修改,(即修改没有添加到暂存区)
git status有两个功能:
- 指出当前工作目录下还没有被git管理的文件,untracked file,直接add就行啦,
- 被git管理但修改了放在暂存区,但还没有被提交commit的文件
常见提示的意义:
- nothing to commit说明暂存区与本地库一致了,
- worktree clear说明没被不被git 管理的,而且修改都提交到了本地库,
也可以直接交到本地库,或者是先add 后commit,
撤销操作:工作区的文件修改了,变成新版本的文件时候,还可以撤销修改的,git checkout -- <file>,这样连工作区的修改就会被撤销,
但是如果已经添加到暂存区了,我又想撤销,那么就用 git reset HEAD hello.txt,这样又会将暂存区的新版本撤掉,但是工作区的修改不会被撤销,
git创建分支是创建指针,而切换分支也只是切换指针,HEAD,
a即 all,
merge这一块非常重要,
git与远程库的交互:
远程库只能通过在github网站上新建仓库,刚开始只有提示信息,没有实际的内容,
git remote add origin https://github.com/toTony111/Hello.git
//给远程库的地址起个别名,origin
git remote -v //查看
git push orgin master //一定要写本地的哪个分支
本地的master分支推送到远程的master分支,
pull=fetch+merge,第二种比较保险,
git fetch origin 或者是加上明确的分支 git fetch origin master
git merge master origin
协作而且是都在主分支上修改的话,那就很恐怖啦,两个人都是主人,都可以直接修改,
本地库修改了hello.txt,还没有提交,但是远程库又改了hello.txt,然后是本地库推送到远程,就会发生错误,然后
我就要把远程的pull下来,但是就会发生冲突啦,然后你就要决定你要怎么改,
分支也有分本地分支(master) 远程的 (origin/master)
git merge origin/master 什么时候要用斜杠,merge才要用,其他都是用空格,因为默认的master是本地的master
git 的操作大致明白了,
idea 使用git:(这样要要方便许多,但是你要是会用git的话,明白原理,到哪里都会用啦,)
- 快捷键:提交是ctrl+k,而pull是ctrl+shift+k
- 可以在updated info那里选中文件然后ctrl+d可以查看文件跟新前后的对比,
- 如果push出错(即有冲突的话)要修改冲突然后重新push,
- push前也可以看文件的修改前后的对比,选中文件即可
常见的冲突:
- 如果我工作区的项目是在github上最新的版本上进行修改的,那么我push完全没问题,他认为你已经知道详情了,你是没错的
- 简单的提交:是我只是进行简单的添加一些东西,没有在同一个行改动,那么我直接pull下来就行,然后再push就行了
- 而如果有个人在我push之前push了或者是修改了远程库,那么我push会失败,需要解决冲突merge,merge中间是结果,左边是本地版本库,而右边是远程库,你复制粘贴一下两边的东西把结果综合一下,merge,最后提交
看是谁在改动,Tony是我电脑帐户名,而toTony222则是远程库的账号名,
新增是绿色,修改是蓝色,删除是红色
相对于上一个版本我增加了什么东西,相对于上一个版本我删除了哪些东西,相对于上一个版本我改动了哪些东西,
小技巧:
很多时候都不用眼睛去找,而是用搜索,或者是语音搜索,如windows 凭证,
vim中删除一行的快捷键:dd
注意事项:
- 没有add过的就要先add一下,如你先从远程库的主分支里pull下来,然后冲突,然后你修改冲突文件
- 要先add,后commit最后然后push到远程库的主分支,直接commit不行,因为暂存区只有一个,工作区却是可以有多个
- 使用.ignore文件首先要下载.ignore插件,然后新建一个文件
- 一定要注意当前的账户是哪个,有头像的是1,没头像的是2
- 新建好一个工程后就要新建一个.ignore文件,然后往这个文件里添加 .idea/ 还有 out/来过滤,然后才是添加版本控制,把这个项目分享到github里面去
最后献上速查表: