配置git身份信息:
git config --global user.name "quzq"
git config --global user.email "quzq@qq.com"
查看配置的身份信息:
git config user.name
git config user.email
使用git终端切换到文件夹下, 运行初始化, 来管理这个文件夹
git init # 初始完成会在文件夹下生成.git隐藏文件夹
git remote add origin https://xxx.git # 配置git的远程地址
git push -u origin master # 推送到远程库.
git pull origin master # 获取源代码
git add . # 添加所有改变的文件到staged状态
git add xx.py # 指定添加要提交的文件
git commit -m “说明” # 提交
git log # 查看提交日志
git status # 获取git详细状态
git status -s # 同上, 获取简明信息
git diff # 用来查看文件未add时的修改(非staged状态下)
git diff --cached # 用来查看add后的修改(staged状态下) 都是和源上的代码做对比
git diff HEAD # staged与非staged状态都可用该命令查看更改
git log --oneline # 查看提交日志, 在一行中显示
git commit --amend --no-edit # 把变更放入最后一次的变更中, 描述不变, 但是commit的id会改变
staged状态到非staged状态:
使用git add 1.py后,状态就成了staged了. 如何回退非staged状态呢?
git reset 1.py # 撤回了上次的add, 只是撤回操作步骤, 更改的内容还在
git reset --hard commit_id # 回到commitid所在的状态, 此状态之后的更改全部抹掉了, 是真的删掉了
# 即使使用该命令再回到以后, 也只保留那个时间点的东西, 在那之后编辑的
# 但未保存的东西也会彻底消失.
git log --oneline # 用来查看截至当前的提交记录
git log --oneline --graph # 用来查看截至当前的提交记录(图形形式)
git reflog # 用来查看所有的提交记录,含未来. 辅助用于回去后再回到未来.
对单个文件的回退:
git reset commit_id 1.txt # 不退版本, 只退文件到commitid, 文件内容不变
git checkout commit_id -- 1.py # 不退版本,只退文件到commitid,文件内容改变,其后修改丢弃.
Git checkout -- 1.txt # 用于文件被修改, 但未add时, 丢弃本次修改的所有内容.
# checkout和reset的区别
checkout用于切换分支和从指定节点的缓存区中覆盖回某个文件
Checkout和reset都可用于回复文件, 但checkout会直接作用到文件中和暂存区, reset只作用到暂存区, 不动文件
单个文件回退:
如未add: 使用Git checkout -- 1.txt # 注意--后又空格
已经add: 使用git reset 1.txt先撤回add操作, 再使用上面的还原修改
分支系列:
Git branch dev # 创建dev分支
Git branch # 查看所有分支, 哪个带*号表示当前在哪个分支
Git checkout dev # 切换到dev分支
Git branch -d dev # 删除dev分支, 此时不能处于dev
Git checkout -b dev # 创建并移动到dev分支上.
在各分支上做的修改不会影响master, 需要合并时使用如下命令:
Git merge dev # 合并dev到master上, 当文件是新加入时会让编辑commit备注
git merge --no-ff -m "合并83fa1.dev" 83fa1.dev # 新建文件合并时可直接用改命令合并加命名
# 临时缓存区
Git stash # 添加变更到临时缓存区
Git stash pop # 从缓存区拿回之前缓存的内容
# 修改文件名
git mv 旧名称 新名称