git记录
安装git
git config --global user.name " 你的昵称随意"
git config --global user.email " 你的邮箱"
git相关命令记录(廖雪峰Git : https://www.liaoxuefeng.com/wiki/896043488029600)
通过git init
命令把这个目录变成Git可以管理的仓库:
用命令git add
告诉Git,把文件添加到仓库可以多次add
不同的文件:commit文件前必须先将文件add到暂存区文件在暂存区进行修改之后需要重新add一次:git add
命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit
就可以一次性把暂存区的所有修改提交到分支,每次修改,如果不用git add
到暂存区,那就不会加入到commit
中。
用命令git commit
告诉Git,把文件提交到仓库 -m
后面输入的是本次提交的说明:
- 使用命令
git add <file>
,注意,可反复多次使用,添加多个文件; - 使用命令
git commit -m <message>
,完成
运行git status
命令看看结果:
git diff
顾名思义就是查看difference
版本回退
git log
命令显示从最近到最远的提交日志命令 查看我们历史记录 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数:
后退我们要把当前版本回退到上一个版本,就可以使用git reset
命令:上一个版本就是HEAD^
,上上一个版本就是HEAD^^ 命令格式
git reset --hard HEAD^ 前进(这是在当前操作的窗口没有关闭的情况)如果要上一个版本回到当前版本
git reset --hard 1094a 版本号没必要写全,前几位就可以了
当前窗口关闭无法找到版本号 Git提供了一个命令git reflog
用来记录你的每一次命令:git reflog
-
HEAD
指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
。 -
穿梭前,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 -
要重返未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
用git diff HEAD -- 文件名
命令可以查看工作区和版本库里面最新版本的区别:
撤销修改
git checkout --readme.txt
可以丢弃工作区的修改:意思就是,把这个文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区没有执行add操作,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后已经执行add操作,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态。
git checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令
用命令git reset HEAD <file>
可以把暂存区的修改撤销掉(unstage),重新放回工作区:git reset
命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD
时,表示最新的版本。
删除文件
rm 文件删除工作区文件然后 是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
:
命令git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
创建与合并分支
创建dev
分支,然后切换到dev
分支 : git checkout -b dev git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令: git branch dev
git checkout dev 然后,用
git branch
命令查看当前分支:git branch
命令会列出所有分支,当前分支前面会标一个*
号。
把dev
分支的工作成果合并到master
分支上:git merge dev
git merge 命令用于合并指定分支到当前分支
删除dev
分支了:git branch -d dev
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
分支管理策略
通常,合并分支时,如果可能,Git会用Fast forward
模式,但这种模式下,删除分支后,会丢掉分支信息。
git merge --no-ff -m "merge with no-ff" dev 因为本次合并要创建一个新的commit,所以加上-m
参数,把commit描述写进去。
合并分支时,加上--no-ff
参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward
合并就看不出来曾经做过合并。
Bug分支
你现在手上有两个工作新需求还没有干完(暂时还不能提交估计还要搞一天)还有一个问题是测试那边有一个bug需要赶紧修复(2小时之内解决) 难受难搞
Git还提供了一个stash
功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash
步骤创建零时的bug分支去解决bug之后提交合并分支
然后切换到dev目录进行干活 , 用git stash list
命令看看:Git把stash内容存在某个地方了,但是需要恢复一下
有两个办法:
一是用git stash apply
恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
来删除;
另一种方式是用git stash pop
,恢复的同时把stash内容也删了:
再用git stash list
查看,就看不到任何stash内容了:
你可以多次stash,恢复的时候,先用git stash list
查看,然后恢复指定的stash,用命令:
$ git stash apply stash@{0}
场景 : master bug修复了但是dev分支也存在这个bug
Git专门提供了一个cherry-pick
命令,让我们能复制一个特定的提交到当前分支:
git cherry-pick <commit> 提交的版本号 用git cherry-pick
,我们就不需要在dev分支上手动再把修bug的过程重复一遍。
git config --list 查看你添加的信息
ssh-keygen -t rsa -C "你注册github的邮箱" 生成本地秘钥 一路空格 或者y即可
pwd 查看你所在的目录
切换到C:根目录
ssh -T git@github.com 查看git是否和github连通
在github上新建项目
在本地新建一个工作目录使用 使用git命令工具一步一步执行命令
echo "# demo" >> README.md 创建文件并写入
git init 初始化工作目录
git add README.md 添加相应文件到index
git commit -m "first commit" 提交已经相关信息
git remote add origin https://github.com/*****/demo.git 远程git地址
git push -u origin master 提交到远程仓库
git remote -v查看所有的仓库