- Git环境配置
配置用户名——git config --global user.name "用户名"
配置邮箱——git config --global user.email "邮箱"
检查用户名——git config --get user.name
检查邮箱——git config --get user.email
- 首先是git init,初始化一个本地仓库,同时将有一个.git隐藏文件生成。有时你会在已经是git仓库的情况下再次git init,那么将会出现如下现象
- 在你初始化仓库成功之后,你将需要掌握git status这将教会你查看仓库实时的状态。当然使用git status我们看到的状态将会有很多种,我这里就不一一列出,总之看懂提示信息是关键。
- 在做文件提交之前,我们需要了解清楚git内部基本结构,如下图所示。
我们首先来讲一下WorkSpace、Index Stage、Repository三者所建立的结构原理:
- WorkSpace顾名思义是我们仓库改变最频繁的区间,我们能从根目录看到的所有东西都属于工作区
- Index Stage就是执行
git init命令所在的目录,我们要修改的文件就在此目录,但是并不包括.git目录,实质上存储着文件索引index- Repository存储改动后的项目文件
接下来是本地与远程库之间的push、pull操作:
- push顾名思义就是将本地仓库对应分支上的内容提交到指定的远程仓库
- clone下载整个工程或者某一分支,克隆之前本地仓库并不需要手动初始化
- pull是将远程仓库中对应分支下的内容拉取到本地,表面意思是这样,但是pull包含了两个过程fetch+merge,也就是说你将远程分支上拉取得到内容后,本地还需要进行一次合并操作,在合并操作中首先是git帮你合并两个分支的内容,这时我们通过git status可以查看合并情况,当某一处不能实现合并时,需要我们人为进行合并(进入相应文件根据它的冲突位置进行修改)。
-
git add .或者git add [文件名]
首先当我们
WorkSpace作出改动时,使用git add .将所有修改内容添加至暂存区,也就是上图中红色路径上的内容。其中玄机还有很多,当你们在使用各种Jetbrains公司的工具时(例如:Android Studio),文件内容你未做出任何改变,但是将会提示你先提交本地改变的内容再做其他操作,其原因是因为相较上一次commit之后你打开查看过一些文件,然而IDE将会保留改信息,并在下一次你打开项目时,同时打开这些文件,因此这也属于你仓库中改变的信息,所以也需要再次提交至暂存区。当你使用Android Studio时,在绑定了本地git.exe后,系统能够自动帮助你完成git add .这一操作。 -
git commit -m"修改信息"
将缓存区的内容提交至本地仓库,代表着次阶段代码修改正式保存到了本地仓库,.git文件中也会有此次提交记录。如果使用
git commit将会进入Vim编辑器界面,输入我们的修改信息,保存并退出就可以了,等同于git commit -m"修改信息"。在Vim编辑器中,首先你要开始编辑,点击键盘i键即可,信息输入完成,点击ESC退出编辑状态,再输入:wq即可实现保存并退出的操作 -
git add remote [远程主机名] [远程仓库链接]
- 链接名:没有固定的命令,看个人意愿,但平常大多数人习惯于使用
origin - 远程仓库链接:存在Https、SSH两种链接,直接在自己的git仓库中拷贝就可以了,但是我们在这里要讨论的是二者使用场景的区别。Https是平常大家用的最多的一种协议,在git中使用没有什么局限性,当你要克隆别人仓库时,直接
git clone [远程仓库链接]这样就可以拿到了,但是SSH是不行,因为使用SSH是有很大局限性的,你必须是这个仓库的拥有者或者合作者,而且还要与自己的电脑配置密钥;由于Windows存在凭据管理器,当我们第一次登陆成功过git之后,以后我们再次进行push操作时,就不需要再次手动输入用户名、密码。而对于SSH,只要远程配置了本地秘钥,push操作之前就不再需要进行登陆操作。
- 链接名:没有固定的命令,看个人意愿,但平常大多数人习惯于使用
-
git push [远程主机名] [分支]
- git push origin master:将本地当前所在分支提交到origin远程库的master分支
- git push -u origin master:给本地当前分支指定默认远程主机名和分支(针对于首次push)
- git push -f origin master:将远程库master分支上的内容完全替换成本地当前所在分支内容
- git push origin master:alpha:将本地的master分支提交到远程的alpha分支上(远程库中不存在alpha分支)