初始化一个项目区
alan@pc:/raid/xz/workspaces/git_test/wechat$ git init
已初始化空的 Git 仓库于 /raid/xz/workspaces/git_test/wechat/.git/
设置签名
设置项目签名
alan@pc:/raid/xz/workspaces/git_test/wechat$ git config user.name xz
alan@pc:/raid/xz/workspaces/git_test/wechat$ git config user.email 12345678@qq.com
# user信息可以在当前目录./git/config文件中看到
设置系统签名
alan@pc:/raid/xz/workspaces/git_test/wechat$ git config --global user.name xz
alan@pc:/raid/xz/workspaces/git_test/wechat$ git config --global user.email 12345678@qq.com
# 全局用户信息在这个文件中可以看到/home/alan/.gitconfig
查看状态
工作区与暂存区不同显示红色信息
工作区与暂存区相同,暂存区与本地库不同显示绿色信息
alan@pc:/raid/xz/workspaces/git_test/wechat$ git status
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
a.txt
将工作区提交到暂存区
alan@pc:/raid/xz/workspaces/git_test/wechat$ git add a.txt
alan@pc:/raid/xz/workspaces/git_test/wechat$ git status
位于分支 master
尚无提交
要提交的变更:
(使用 "git rm --cached <文件>..." 以取消暂存)
新文件: a.txt
取消放到暂存区
alan@pc:/raid/xz/workspaces/git_test/wechat$ git rm --cached a.txt
rm 'a.txt'
alan@pc:/raid/xz/workspaces/git_test/wechat$ git status
位于分支 master
尚无提交
未跟踪的文件:
(使用 "git add <文件>..." 以包含要提交的内容)
a.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
# 全部清除出暂存区
git rm --cached -r .
从暂存区提交本地库
alan@pc:/raid/xz/workspaces/git_test/wechat$ git commit -m '注释' a.txt
# -m 后边要写注释
查看历史记录
# 普通
git log
# 好看
git log --oneline
git log --pretty=oneline
# 实用,看一看移动几步
git reflog
版本的前进和后退
基于索引值的操作(git reset --hard [索引号或HEAD])
alan@pc:/raid/xz/workspaces/git_test/wechat$ cat a.txt
aaaaaaa
bbbbbbb
ccccccc
ddddddd
alan@pc:/raid/xz/workspaces/git_test/wechat$ git reflog
36e8a9d (HEAD -> master) HEAD@{0}: commit: this is second commit
5124b5f HEAD@{1}: commit (initial): this is my first commit a.txt
alan@pc:/raid/xz/workspaces/git_test/wechat$ git reset --hard 5124b5f
HEAD 现在位于 5124b5f this is my first commit a.txt
alan@pc:/raid/xz/workspaces/git_test/wechat$ cat a.txt
aaaaaaa
bbbbbbb
ccccccc
reset命令的三个参数
--soft
1.仅仅移动本地库的指针(不会动工作区和暂存区)
--mixed
1.移动本地库指针
2.重置暂存区
--hard
1.移动本地库指针
2.重置暂存区
3.重置工作区
文件比较(不带文件名比较多个文件)
# 和暂存区比较
git diff a.txt
# 和本地库HEAD指针位置比较
git diff HEAD a.txt
# 和历史版本比较
git dif HEAD^ a.txt
分支
# 查看分支
git branch -v
# 创建分支(hot_fix是分支名)
git branch hot_fix
# 切换分支
git checkout hot_fix
# 合并分支(分两部)
# 1.切换到接受修改的分支,假设master是接受合并的分支
# 2.执行merge命令,假设hot_fix是有新内容的分支
git checkout master
git merger hot_fix
与远程库github或gitee互动
# 查看别名
git remote -v
# 增加别名(name1自己起的名)
git remote add origin https://github.com/xz-0/git_test.git
# 删除一个地址
git remote remove origin
# 例子(fetch代表取回的地址,push代表推送的地址)
alan@pc:/raid/xz/java/javacode$ git remote -v
origin https://gitee.com/xu-yu-chen/javacode.git (fetch)
origin https://gitee.com/xu-yu-chen/javacode.git (push)
push
git push name1 master
clone(不用初始化)
git clone https://github.com/xz-0/git_test.git
克隆的效果:
1.初始化本地库
2.完整的将远程库下载到本地
3.创建origin远程地址别名
pull = fetch + merge
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名]/[远程分支名]
# fetch
git fetch origin master
# 查看fetch的文件,并不会改我们工作区的内容
# 首先切换到checkout,就可以查看fetch下来的东西
git checkout origin/master
# 记得checkout回去
git checkout master
# merge
git merge origin/master
git pull [远程库地址别名] [远程分支名]
git pull origin master
强制pull,直接覆盖本地
$ git fetch --all
$ git reset --hard origin/master
$ git pull
.gitignore文件
*.png #忽略所有.png文件
models/ #忽略model/文件夹和model/里面的所有文件
一直忽略某个文件
# 1、将文件修改忽略
# 首先进入到这个文件夹的所在的目录然后再设置忽略文件夹的提交
git update-index --assume-unchanged [file-path]
# 2、取消文件忽略
git update-index --no-assume-unchanged config.php
# 3、git 强制替换本地文件
# 分三步
git fetch --all git fetch从远程下载最新的,而不尝试合并或rebase任何东西。
git reset --hard origin/master 将主分支重置为您刚刚获取的内容。
git pull 可以再次pull 一下
# 参考
# https://blog.51cto.com/lxw1844912514/2982238