Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。[1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
基本的使用
一、将文件添加到暂存区,再提交到本地仓库
初始化一个本地版本库,执行一次即可,后面不用再执行
git init
设置用户名和邮箱(全局)
git config user.name "用户名"
这个位置
git config user.email "xxxxxx@qq.com"
就是github绑定邮箱
创建一个文件
touch ai.txt
查看状态
git status
将该文件添加到暂存区,然后再查看状态:
git add ai.txt
如下图示就是文件到了暂存区了
提交到本地版本库中
附:
1)-m后跟注释内容
2)可以 直接 在后面跟上文件,表示把该文件提交到本地版本库(不推荐)
3)不跟任何文件名称,表示把当前所有暂缓区中的内容都提交到 本地版本库 中
下面两种写法都可以,这里用的后一中
git commit -m "提交ai.txt文件试试" ai.txt
git commit -m "提交ai.txt文件试试"
出现如下代表提交成功
验证,nothing to commit, working tree clean表示成功将文件从暂存区提交到仓库
二、修改文件
先用vim命令对ai.txt文件进行修改,操作和在Liunx一模一样,修改完后在执行git status查看状态
这种红色的状态代表可提交(commit)
再次执行
git add ai.txt
这种绿色状态代表成功到达暂存区
然后执行commit,再查看状态nothing to commit, working tree clean
三、删除文件
step1: 删除本地
rm -rf ai.txt
step2:删除暂存区
git rm ai.txt
git status
step3:提交删除
git commit -m "注释"
以上是从工作区到暂存区的操作,下面是操作远程仓库相关的
首先获得远程仓库地址
git config --list 查看设置过的参数
然后到一个你想放这些克隆文件的路径,可以是任何路径,右键点击 Git bash here
执行 git clone <刚才复制的地址>
整个repository就被下载下来了。
以下是进入文件夹,修改了一个文件,然后上传到暂存区,然后commit到本地仓库
那个 "测试用" 是个没有后缀名的文件,之前我已经用vim修改过了它的内容。
然后执行git push,上传到远程仓库
去自己github看了下,上传成功,也可以看到自己注释的信息等等。
总结:
touch xx.txt 创建文件
git add xx.txt 添加到缓存区
git commit -m "hahaha" 提交到本地仓库
git push 上传到远程仓库
先在gitHub上创建一个仓库
回到本地,在你要操作的项目文件夹下,鼠标右击打开 git bash命令窗口
如果项目文件夹里没有.git的隐藏文件,先执行git init,将此文件夹变为git可以管理的仓库
通过git add . 将所有文件提交,点代表当前路径下所有文件
上面的操作就将当前路径下所有文件放到了暂存区
通过git status可以看到文件都变绿色代表是在暂存区可提交的状态
git commit -m "注释" ; 将文件从暂存区提交到本地仓库
这个时候本地的仓库和没有和远程发生关联
通过 git remote add origin https://github.com/LittleSong2313996874/Task5.git,
git remote是管理远程仓库的命令,后面的add origin <地址> ,表示增加了一个origin远程仓库,origin是一个指针指向了后面的value。
在将本地仓库与GitHub网站上的仓库进行关联后,便可进行推送了,但是在第一次进行推送时,需要注意的是,GitHub网站上的仓库并非是空的,在创建时创建了一个README文档,因此需要将两者进行合并才行。rebase和merge都代表合并,两者区别:rebase和bersge区别
git pull --rebase origin master
最后,再进行推送即可。
git push -u origin master
这个带有-u这个参数是指,将master分支的所有内容都提交,第一次关联之后后边你再提交就可以不用这个参数了,之后你的每一次修改,你就可以只将你修改push就好了。
git push origin master
去刷新github发现提交成功。
上述命令中,origin代表远程仓库,master代表其分支。
比如:
git push A B:C 其中A和C是分别remote端的一个repository的名字和其branch的名字,B是本地端branch的名字
它的意思是把本地的B推送到remotes/A/C下。当B=C时可以直接省略为:git push A B。比如:
"git push origin master:master" 可以直接省略为"git push origin master".
再比如:
git push origin master //把本地仓库提交到远程仓库的master分支中
$ git push origin test:master // 提交本地test分支作为远程的master分支
$ git push origin test:test // 提交本地test分支作为远程的test分支
链接:
理解git中的head和master
git一些概念理解
origin 多用于指代远程仓库
master 多用于指定分支,可以是远程端分支也可以是本地端
fetch 拿取 push 推送
git branch -a 查看所有分支
上面的显示表示
master 代表本地分支,
origin/master是远程分支 (origin指向仓库,master指向分支)
第一行的master前面的星号是你所在的分支的标记
第二行的红色是因为我后来对远程仓库master分支做了修改,本地和远程不同步。
另外关于 git clone remote branch等等一些命令概念讲解,推荐这个链接 : git clone,push,remote,fetch命令详解
新增:删除github里的文件夹
github作为一个远程仓库如果想要删除里面的某个文件夹还要克隆再在push。
但是有时候的文件夹确实是没用的,比如idea目录下的 .idea
这时可以通过以下命令,注意这个 --cached 加文件名的形式,会删除本地仓库里的,但是不会删除实体文件
步骤:(以删除.idea文件夹为例)
git rm -r --cached .idea #--cached不会把本地的.idea删除
git commit -m 'delete .idea dir'
git push -u origin master
可以看到实体文件还在
但是github上的已经删除了