git常用命令

git init						-- 初始化git生成git仓库
git status						-- 查看git状态	
git add							-- 添加文件到暂存区
git commit						-- 提交变更文件到本地仓库
git pull						-- 将远程主机的最新内容拉到本地
								   pull会把所有的提交自动合并到当前分支
git fetch						-- 从远程获取最新版本到本地,不会自动merge。
								   fetch只是把拉取的提交存储到本地仓库,真正合并到主分支中需要使用merge
git merge						-- 合并分支
git push						-- 提交到远程
git stash						--  将一个修改后的工作区中的改动保存起来,将工作区恢复到改动前的状态。
git log							-- 查看提交记录日志
git branch						-- 查看所有分支
git reflog						-- 查看所有的操作记录
git rebase						-- 重新排列base,base指commit
git remote						-- 创建、查看和删除本地仓库与其他代码仓库之间的连接
git clone						-- 初始拉取项目
git cherry-pick					 -- 将指定的提交(commit)应用于其他分支。
git reset <filename>			 	 		-- 重置到某个commit的状态
	--hard :不保存所有变更
	--soft:保留变更且变更内容处于Staged
	--mixed	:保留变更且变更内容处于Modified
git checkout <name> <template>			-- 创建新分支
	<name>:新分支的名字
	<template>:指以哪个分支或者commit 为模板 
git checkout <branchname>          			-- 切换到指定分支
git checkout -b <name> <template>		    -- 切换指定分支(进入自己的分支)master(主干)

常用提交步骤

git stash						    -- 查看git状态
git add <filename>				 	-- 添加文件到暂存区
git add .						    -- 加入所有文件到暂存区
git commite -m 'message'		 	 -- 提交变更文件到本地仓库
git pull                              -- 拉取远程分支项目
git push                              -- 提交到远程自己分支 

git本地创建分支提交至github

#	未确定好,复习完学习视频后重新编辑。

git fetch								 -- 查看远程仓库分支信息
git branch								 -- 查看本地分支
git branch 分支名称                          -- 创建本地分支        		 
git checkout <branchname>          			-- 切换到指定分支
git merge 来源分支							-- 合并分支
git push --set-upstream origin bc-a			 -- 设置上流分支
	--set-upstream是指设置上流分支

文件状态

1.没有被add过的文件叫untracked
2.add之后文件处于staged状态等待commite
3.commit之后文件处于unmodified这里之所以是modified是因为文件会跟仓库中的文件对比
4.当unmodified的文件被修改则会变为modified状态
5.modified之后的文件add之后将继续变为staged状态
6.unmodifed的文件还有一种可能是已经不再需要了,那么可以remove它不再追踪变为untracked状态


1.Untracked:新建文件
2.Unmodified:
3.Modified:
4.Staged:git add之后,文件状态为Staged

一些解决方法

git撤销

1.执行了 git add . 后发现文件错误,使用git restore --staged 撤销暂缓区的提交的文件

命令:git restore --staged 

2.本地修改了 但是改错了 或者 不想要本地的修改

命令:git checkout .

git回退版本

1.查看版本所有提交的版本号:git log
2.如果自己本地有修改的内容还没有提交 需要先备份
3.确定回退到指定版本号:
	(1)git reset <filename> --hard
	(2)回退到上一个版本  ^ 的数量代表回退第几个版本 , 一个^ 代表回退上一个版本,
       两个^ 代表回退上一个的上一个版本:git reset --hard HEAD^
	(3)回退到第上100版本:git reset --hard HEAD~100
3.强制将本地代码同步到远程仓库:git push origin master --force,master主分支   ###此方式不建议

多人修改同一分支导致报错

在本地修改了a文件,然后我们pull 或者push ,如果远程分支下a文件也有修改,这个时候就会 出现冲突

  1. 如果本地修改的少或者无关紧要的话 可以放弃本地修改 git checkout . 然后git pull

  2. git pull 更新代码出现冲突的解决方法

    1.将没有commit的代码修改放在堆栈中:git stash 
    2.拉取远程分支(此时本地分支会回滚到上次commit的情况,你的改动都存在stash中):git pull  
    3.将stash中改动重新加回本地分支:git stash pop 
    4.如果改好了:git add . -> git commit -m 'message' -> git pull -> git push
  3. 在 git pull 更新代码的时候出现冲突

    git add .
    	↓
    git commit -m 'message'
    	↓
    在pull的时候出现冲突
    	↓
    git pull
    	↓
    这个时候需要解决本地的冲突再一次的提交
    	↓
    git add .
    	↓
    git commit -m 'message'
    	↓
    git pull
    	↓
    git push
  4. 在git pull --rebase 或者 git rebase 分支名 之后如果有合并冲突 使用一下方法解决

    1.git rebase --abort 放弃合并, 回到rebase操作之前,如果时git pull --rebase  就会恢复到pull之前 ,如果时 	 git rebase 分支名 就会 恢复到合并之前
    2.git rebase --skip 会将冲突 commit 丢弃(警告 尽量不要使用)
    3.git rebase --continue  相当于 git commit -m '注释'4.git push

git commit -m ‘message’ 报错

方法一:跳过验证:
	git commit -m "message" --no-verify
方法二:删除验证规则 不建议这么做。
	删除.git的提交规则文件: rm -rf ./git/hooks/pre-commit
方法三:根据规则把代码改好在提交

-----------------------------------------------------------------------------------------------------
    
下面了解一下pre-commit
pre-commit 是验证代码使用的钩子
在pre-commit 中加一些规则可以在 git commit -m ‘ 注释’ 提交之前验证 (如果验证不通过阻止提交)