git基础命令和部分原理

----git 中的一些概念

    1.工作区   当前直接操作的内容

    2.暂存区   临时存放改变的内容

    3.版本库   仓库中保存的内容

----git存储变化

    1.git add

        暂存区目录树更新

        修改或者增加的文件内容会写到对象库中的对象中

    2.git commit

        暂存区目录树写到版本库中

    3.工作区和暂存区比较

        git diff 

    4.暂存区和HEAD比较

        git diff --cached

    3.工作区和HEAD比较

        git diff HEAD

-----文件提交到本地仓库

    1.git status 

        查看文件修改情况

    2.git add  [filename]

        添加已修改的文件名

    3.git commit -m "reason for commit"

        将已加入的文件进行提交 并附上提交说明

-----文件push到远程仓库

    4.git push origin master

        把本地commit同步到远程仓库master分支

    

-----git相关命令

    1.git grep  hello

        在搜索所有工作区文件包含hello的内容

    2.git clone url   localName

        克隆一份拷贝到本地

    2.1 git clone url localName --bare

        拷贝一份裸仓库到本地

    3.git log --stat

        git log 能够查看所有提交的日志。 加上--stat表示显示每次提交文件变更统计

    4.git diff filePath

        对比修改的内容

    5.git commit --ament -m "sasdasd"

        提交到上一次的commit中,并且修改提交说明

    6.git stash

        将工作区和暂存区的改动全部封存起来

    7.git branch 

        查看所有分支,带星号的是当前所在分支

    8.git branch work

        创建名为work的分支

    9.git checkout work

        切换到名为work的分支

        git只有在根目录存在.git目录,这是工作区对应的版本库。

    10.git config --global alias.st status

        给git status 中 status设置别名为st

    11.git init demo

        初始化版本库demo

    12. git init demo --bare

    创建一个裸仓库,裸仓库的意思就是仓库不保留工作区的内容。只有设置这个才能让别人push代码。为什么要裸仓库才能被push,原意很简单,假设仓库有很多分支,每个分支的工作区可能不一样,这样以那个分支作为工作区呢?工作区对于不是用来开发的共享仓库有什么意义呢?所以作为集中的共享仓库是没有工作区的。

-----git找回代码

    1.git reset --hard HEAD^

        这个命令的意思是撤销前一个提交,不把之前的提交撤销到缓暂存区。 

        如果使用参数--soft,就是撤销前一个提交,并放入缓存区。        

    2.git reset --hard HEAD^

        这个命令是非常危险的,不过在git里面文件的修改记录依旧保存在.git中的objects目录。我们依然可以找回来。

        方法就是使用git reflog,这个可以看到所有的历史操作记录,然后找到上一次提交的sha1的值,通过git reset sha1值就能回到上一次提交的时间点。


------git把一个分支的提交合并到另一个分支

    git cherry-pick dc4de390ec48ee389ff93924c9b587a5d343e7a0


------git 打tag

    git tag -m "message for tag"  tag_1.1.0 <commitID>

    针对某个提交为止打tag。

    tag只是默认只是本地可见,需要显示推送到远程仓库


-----gerrit

    gerrit可以认为git代码审核工具。是用java写的。

    gerrit本身基于ssh协议实现了一套Git服务


参考文献:Git权威指南  蒋鑫 


你可能感兴趣的:(SVN,命令,git,git,git,git,push,cvs,commit,版本控制)