Git命令

Git:应用广泛的分布式版本控制系统

 

版本控制系统:保存某一时刻某些文件快照

分布式:每个计算机都将中央服务器的信息完整的复制到本地文件(中央服务器有远程仓库)

SVN:只保存变化的内容,用递增的方式提交版本号

GIT:保存完整的快照,用hash来计算版本号

 

GIT的三种状态:1.已修改  新建或者修改了某个已经存在的文件,并不打算提交

         2.已暂存:讲已修改的文件包含下次提交的快照中,但是还没提

         3.已提交:已经存在本地仓库中

 

连接远程仓库:Http每次交互需要输入用户名和密码

       ssh  需要先在linux中输入 ssh-keygen一直按回车

        根据路径去找到公钥,将公钥添加到ssh kyes中

Git命令:

git init:创建一个空的本地仓库或者重新初始化一个已经存在的本地仓库

git remote:管理相关的远程仓库

    + add origin url   在本地关联了一个远程仓库,这个仓库的名字为origin

    也可以重命名,删除等等操作

git clone:可以将远程仓库的内容克隆过来,此时会自动生成一个本地仓库并且和远程仓库关联起来

 

我怎么用git clone 远程的所有分支:https://zhidao.baidu.com/question/264071541339121645.html

 

git status:显示工作区域的状态,如果只修改某个文件会显示未跟踪的文件

如果想让修改过的文件或文件夹不被git status提示,可以vi .gitignore 将不想被提示的文件或文件夹的名字输入进去

 

git add + 文件:将一个文件交给git跟踪(将一个文件从工作区域提交到暂存区域)

git reset HEAD + 文件  将一个文件从暂存区弄回到工作区

git commit -m "add message line 1" + 文件  可以将文件从暂存区提交上去  这里的-m是指可以在后面写一段话当做备注

可以通过get commit -am  完成add并提交的步骤

git push:将本地仓库推送到远程仓库,先push再merge,只有push了才能在网页中看到

    -u origin dev  可以添加远程分支

 

git log:记录提交日志(本地远程都有,远程会与本地相同)

git reflog:记录所有的操作日志(只存在于本地仓库),比如切换分支log就没有 这个就有

 

git config:修改git配置信息 比如可以修改日志中我们的姓名,邮箱等

 

git diff:用来显示不同提交,不同区域,不同分支的差别

    默认是显示工作区与暂存区之间文件的差异

  +    --cached或--staged  会对比暂存区与工作区域的差异

 

 

git checkout -b dev:创建并且切换到dev分支(-b应该是没有就创建)  

      +  -- 文件名  可以将文件恢复成本地仓库的样子

      + 版本号 文件名  可以将文件恢复成某个版本的样子

      HEAD 文件名 代表最近一次的提交

      HEAD~ 文件名 代表上次提交

      HEAD~2 文件名 代表上上次提交,以此类推

或者通过:git branch dev

        git checkout dev  来创建别切换到dev分支

git branch:查看分支,当前分支前面会有个*

 

合并某分支到当前分支:git merge <name>(分支的名字)

删除分支:git branch -d <name>

 

git fetch:拉取远程仓库到本地仓库

git merge:合并分支

  +  --abort  将这次合并取消

git cherry-pick +版本号  可以只与当前分支合并某次提交,而merge就会合并全部提交

git rebase:合并分支

  与git merge的区别

 

上面是git merge  可以看出合并效果会比较乱

下面是git rebase  原本d和e都是dev分支的,合并后变成d'和e',最后是一条线,看起来比较整齐

git pull:会将远程服务器中所有的分支的内容都弄过来。

 

如果两个用户都从远程终端读取到信息,发生了冲突,那么后者需要git pull来获取,然后对发生冲突的文件进行手动解决冲突

再次push上去(commit 不需要加-m了),同时可以看完合并后的文件可以取消合并,手动修改不需要合并的地方

 

git reset --mixed HEAD~  将本地仓库上一个版本的内容拷贝到暂存区   默认是这种情况

git reset --hard HEAD~    将本地仓库上一个版本的内容拷贝到暂存区和工作区(没把握少使用)

git reset --soft HEAD~     将HEAD这个指针指向上一个提交的版本,只改变指针的指向

 

git revert +版本号  可以去掉某次提交,需要一个界面显示可以先写入再退出

推荐使用这个,如果用git reset --hard HEAD~ 会将记录全都删除掉

 

 

 


 

posted @ 2019-03-20 17:29  TheQi  阅读(138)  评论(0编辑  收藏  举报