首页 > 技术文章 > git记录

jiahaoJAVA 2018-12-15 15:17 原文

 

安装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 后面输入的是本次提交的说明:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  2. 使用命令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 commitgit 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 devgit 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查看所有的仓库

 

推荐阅读