设置用户信息
git config --global user.name "Samarua"
git config --global user.email "[email protected]"
git config --global user.xxxx "xxxx"
获取用户信息
git config user.name
git config user.email
git config user.xxxx
查看配置信息
git config --list
新建一个本地Git仓库
创建一个文件夹,然后cd到该文件夹下:
git init
然后该文件夹就成为了本地Git仓库的工作区,且自动生成了一个隐藏文件夹.git
克隆一个本地Git仓库
git clone https://xxx.xxx.xxx
效果和上面的本地新建完全一致,也是存在一个隐藏文件夹.git
查看工作区的文件状态
git status
查看工作区的文件状态(简洁输出,常用)
git status -s
如果看不到任何的输出,那是因为我们还没有对工作区的文件做任何的修改,未修改状态(unmodified)的文件不会显示
另外,我们手动新建在工作区的文件,处于未跟踪状态(untracked),是会显示的!!!
将文件加入暂存区
git add xxx
未跟踪状态(untracked)的文件被加入暂存区,同时也即进入了已跟踪状态(tracked)
未修改状态(unmodified)的文件是无法加入暂存区的,因为这没有意义
将文件拿出暂存区
git reset xxx
回到加入暂存区之前的状态
将暂存区提交到本地仓库
git commit -m "xxxxxxxxxx"
-m是用来写日志信息的,如果不加上就会弹出类似vim的编辑器强制你写 >_<
这是提交全部的暂存区,也可以加上文件名提交某一个文件
提交后的文件就不存在于暂存区了,它转化为了未修改状态(unmodified)且不显示了
一步到位将非暂存区文件提交到本地仓库
git commit -a -m "xxxxxxxxxx"
删除文件
git rm xxx
被删除的文件会进入暂存区,commit提交后被真正删除
将文件加入至忽略列表
有些文件无需纳入Git管理(自动生成的日志文件啊,临时文件啊...),但它们总是出现在未跟踪(untracked)文件列表
因此,我们在工作区中新建一个.gitignore文件(固定名称,无后缀,被自动隐藏),并在该文件中进行配置:
# 忽略所有的.txt文件
*.txt
# 但不忽略loli.txt文件
!loli.txt
# 忽略所有aaa文件夹及其子文件
aaa/
查看日志
git log
回车继续查看更早日志;"q"退出查看
查看所有远程仓库
git remote
如果该本地仓库是从远程仓库克隆下来的,则它至少关联了一个别名为origin的远程仓库
查看所有远程仓库(更加详细的信息)
git remote -v
不仅看到别名,还能看到远程仓库url等信息
查看某个远程仓库(更加更加详细的信息)
git remote show xxx
给本地仓库关联一个远程仓库
git remote add xxx https://xxx/xxx/xxx
其中的第一个xxx是远程仓库的别名,自己起一个就行
从远程仓库克隆到本地
git clone https://xxx.xxx.xxx
克隆是是Git远程仓库上的几乎所有数据(日志信息,历史记录),即每一个文件的每一个版本
移除本地对远程仓库的关联
git remote rm xxx
其实该命令删除的是关联关系,并未真正影响到远程仓库
从远程仓库中抓取/合并
git fetch xxx xxx
从远程仓库抓取(fetch)到最新版本放到本地仓库,但没有自动合并(merge),所以工作区中看不见抓取来的文件
git merge xxx xxx
因此还需要手动将被抓取到本地仓库中的最新版本文件合并(merge)到工作区中
另:第一个xxx是远程仓库别名,第二个xxx是分支名称(下同)
从远程仓库中拉取
git pull xxx xxx
完全等价于fetch+merge,即获取最新版本后自动合并到工作区
注意:
如果本地仓库不是克隆来的,而是新建后再关联的,那么如果本地仓库中存在文件,就会拉取失败并报错。此时应该这么写:
git pull xxx xxx --allow-unrelated-histories
推送到远程仓库
git push xxx xxx
推送到了某个仓库(xxx)的某个分支(xxx)
下面将演示一个从Git远程仓库中下载(拉取)文件,修改后再上传(推送)至Git远程仓库的实际开发场景。
1)生成一个关联了远程仓库的本地仓库(方法二选一)
# 方法二: 自己新建
git init
git remote add origin https://gitee.com/samarua/lolihouse.git
git pull origin master
# 方法二: 直接克隆
git clone https://gitee.com/samarua/lolihouse.git
2)修改hello.txt文件,将其从工作区放入本地仓库
# 放到暂存区
git add hello.txt
# 提交到本地仓库
git commit -m "修改hello文本文件"
# 一步到位
git commit -a -m "修改hello文本文件"
3)从本地仓库推送回远程仓库
git push origin master
>_<