1.git init //初始化一个本地仓库,此时会在本地文件夹中创建一个.git文件夹
2.git add [filename]/. //将指定的文件加入到本地暂存区,git add . 表示将文件夹中所有文件加入到暂存区。
3.git commit -m "xxx" //将暂存区中的文件提交到本地仓库,xxx表示提交的注释信息
tips:第2步和第3步可以合并为一步,git commit -am "xxx" 先把文件夹中所有文件都提交到暂存区,再将暂存区的文件都提交到本地仓库。
4.git remote add github git地址 //表示添加远程仓库,其中github表示远程仓库的别名。
5.git push github master //将本地仓库中的代码上传到指定远程仓库的master分支,若是出现冲突,则先使用git pull github master拉取远程仓库的代码到本地。再进行提交 拉取代码指令 --allow-unrelated-histories用于解决本地仓库与远程仓库的冲突。
------------------------------------------------------------------------------------------------------
git status //查看文件的追踪情况
git文件有四种状态:
untracked 未被追踪
modified 工作区修改了某文件但是还没有添加到暂存区
staged 表示工作区修改了的文件,添加到了暂存区但还没有提交到本地仓库
commited 表示文件已经被提交到了本地仓库
查看git的配置信息:git config --list 查看git提交历史:git log
配置git的用户信息:
git config --global user.name xxx
git config --global user.email xxx
----------------------------------------------------------------------------------------------------------------
git commit --amend //撤销上一次提交到版本库的提交,并将暂存区的文件重新提交
git checkout -- [filename] //拉取暂存区的文件,并将其替换到工作空间
git reset HEAD -- [filename] //拉取最近一次提交到版本库的这个文件到暂存区,该操作不影响工作区
------------------------------------------------------------------------------------------------------------
git文件删除:
在本地文件删除后,需要使用git add .命令将文件提交到暂存区
git rm [filename] 可以将工作区以及暂存区中的文件一起删掉,而删除本地文件不删除暂存区文件则在之后使用git add .
当在工作区中修改了某个文件而未将其提交到暂存区,使用git rm 删除此文件时将会出现错误
git rm --cached [filename]可以删除暂存区的文件而不删除工作区的文件
git rm -f [filename] 可以将工作区和暂存区的文件都删除掉
mv命名,可以修改文件名称,单纯使用mv命令,只修改工作区的文件,而未修改暂存区的文件,使用git mv命令,即可都修改。
-----------------------------------------------------------------------------------------------------------------------
git分支
git有且只有一个分支,master分支
创建新的分支 git branch [branchname]
*代表当前分支
git checkout [branchname] //切换分支
git branch -d [branchname] //删除分支,如果向删除分支,需要切换到另一个非删除的分支上
git branch -m [beforename] [aftername] //分支改名
git branch -b [branchname] 创建一个分支并切换到那个分支
--------------------------------------------------------------------------------------------------------------------
git的HEAD指针
git的HEAD指针永远指向当前分支的最新版本
当创建一个分支时(创建dev分支,当前处于master分支),master分支上的文件,dev上也会有
合并dev分支上的文件到master分支上:
git merge dev(当前处于master分支上)
合并分支时,如果两个分支上的同一文件的同一位置出现了不同的代码,就会提示有冲突,合并失败。需要手动解决,解决之后再提交文件到版本库(commit -am "xxx"),如果再统一文件的不同位置有不同,则会直接合并。
---------------------------------------------------------------------------------------------------------------------------
git diff命令
git diff命令默认比较工作区与在那存取的文件差异
git diff --staged 比较暂存区与版本库的差异
git diff比较统一分支中不同版本的区别:
git diff [版本号] [版本号] //版本号可用git log查看
git [branchname] //比较当前分支与目标分支的区别
-----------------------------------------------------------------------------------------------------------------------------------
git stash暂存
当本地修改了文件,再切换分支,会报错,这时可以修改暂存。git在进行分支切换的时候,主要改变的是版本库,git stash将当前工作区或暂存区中的改变进行封存,git也会将改变撤销掉,这时便可成功切换分支。
git stash list //查看有哪些暂存
git stash apply stash@{[edition]} //恢复内容
git stash pop stash@{[edition]} //恢复内容并删除当前版本的暂存
git stash drop stash@{[edition]} //删除stash
---------------------------------------------------------------------------------------------------------------------------------------
git分支合并
git merge test(加入当前分支是master)
表示将test分支上产生的变化合并到master分支上,产生变化是指版本库中有文件的增删或者修改并且已经通过commit命令提交到本地版本库中。
-----------------------------------------------------------------------------------------------------------------------------------------------
git远程仓库
有两种连接远程仓库的办法,一种是使用http协议,一种是使用ssh协议。但是直接使用ssh地址连接远程仓库会报错。因为ssh协议需要将本地生成的公钥放到github服务器里面才能连接github服务器。
在bash窗口中输入git -keygen即可生成,里面有生成公钥的地址,将公钥复制到github中(settings(ssh)->new SSHkey)。
--------------------------
在远程服务器上搭建github仓库:
1.在服务器上想要使其成为仓库的文件下使用git init --bare来创建一个裸露的仓库
2.git push ssh://root@ip/仓库路径 + 分支,输入服务器的密码即可(其中root为登录用户)
git reset --option:
--hard: 将暂存区和工作空间都回退到之前版本
--mixed: 工作区不受影响,仅仅影响暂存区和版本库到指定版本
--soft: 将版本库到指定版本,工作区和暂存区保持不变
git ssh免密登录:
ssh -keygen 创建公钥,私钥,并将公钥配置到github远程仓库中以实现ssh免密登录
ssh-copy-id user@host 将本机的公钥复制到远程服务器的authories.key文件中,可以实现pull/push不要密码
将远程分支拉到本地 git fetch github master
将远程服务器的代码合并到本地 git merge github/master
-------------------------------------------------------------------------------------------------------
在项目文件夹中简历.gitignore文件
index.* 表示忽略所有包含index的文件
.gitignore 忽略本身的.gitignore文件
*匹配任意个字符
[abc]匹配其中任何一个字符
?匹配一个任意字符
[0-9],[a-z]匹配范围
touch [filename] 表示新建文件
git help + 命令 该命令的使用文档