git常用命令

来源:互联网 发布:安卓pad应用推荐 知乎 编辑:程序博客网 时间:2024/05/01 19:20

          总觉得能写出来才是自己的。我们进行开发工作,代码和版本管理是不可少的,git不同于CVS和SVN这样的集中式版本控制系统,它是分布式的,每个人都有一份代码库,远端的中央服务器只是起到交换代码修改的作用。git的优势不仅在于不联网就能干活,更强大的是它的分支管理。

         安装好后需对其进行配置:git config --global user.name "qiqi";     git config --global user.email "qiqi@qq.com"

         创建版本库:在新建的文件夹下右键打开gitbash或者按住shift打开cmd,执行:git init。此文件夹变为一个git仓库。

          git工作流:

                                   

  在仓库中有修改时:通过git add -A,提交到暂存区;

           提交到历史区:git commit -m“第一次修改” ;(提交前必须add)

          查看三个区域的状态:git status,红色表示工作区的改动,绿色表示暂存区的改动。

          查看工作区和暂存区中文件的区别:git diff;

          查看暂存区和历史区的差异:git diff -cacher

          回到过去的commit或者到未来的commit:

          查看commit记录:git log;(git log --oneline:精简显示信息;git log --oneline --all --graph --decorate:类图形化显示commit变动)

         回退到上一个版本:git reset --hard HEAD^(git reset --hard 提交id:回退到任意之前的版本; --hard:回退工作区、暂存区、历史区;--soft:值回退历史区:--mixed:只回退历史区和暂存区)

         回退后悔了,想恢复回退:git relog:查看命令记录,git reset --hard 提交id。

         git commit –amend有时候用 git commit -m 提交时,可能没写好或者误操作导致提交的信息不合适,但你还没有 push 到远程分支时,修改还未提交到远程分支的 commit 信息

         撤销修改:

         之前add了未commit,现在未 add未commit,丢弃工作区:git checkout -- 文件名

         之前add了commit了,现在未add,丢弃工作区:git reset  HEAD 文件名;git checkout -- 文件名;

         关于git checkout:

          git checkout汇总显示工作区、暂存区与HEAD的差异。

          git checkout HEAD:同上

          git checkout -- filename:用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。

          git checkout branch -- filename:维持HEAD的指向不变。用branch所指向的提交中filename替换暂存区和工作区中相应的文件。注意会将暂存区和工作区中的filename文件直接覆盖。

         删除文件:

         误删:git checkout -- 文件名;确实要删除:git rm 文件名;git commit  -m“删除”

           分支:

           git默认是在master上,在此基础上可以建立其他分支,同时有一个指针head,指向最新提交(commit),  

           查看分支: git branch; 

           创建并切换分支:git checout -b dev (等于git branch dev,git checkout dev);

           在master分支上把dev合并到master上:git merge dev

           删除分支:git branch -d dev

           放弃某次合并:git merge --about        

           合并冲突:分别在A分支和B分支上修改,merge时出现冲突,这时候需要手动解决冲突,然后再提交。git log

 --graph --oneline可以查看分支合并图。

            禁用快速合并模式:通常合并分支是,如果可能,git会用fast forward模式,这样合并后会丢掉分支信息。禁用ff模式:git merge --no--ff  -m“merge with no--ff” dev.

           在分支B上执行git rebase 分支A:会将B分支的所有提交追加在A分支后,以前的B分支会被丢弃。(如果想放弃rebase:git

 rebase --abort)

           git cherry-pick commitID:把其他分支的某次提交追加到当前分支。

           关联github:

            git remote add origin 代码库地址;(origin可以随便是 什么名字,只是个标示而已,如果不想关联了:git remote rm origin)

            git remote -v;查看关联了哪些github

            git push -u origin master:将master分支的东西提交到github(远端);

            git pull origin master:把远端的拉到本地。(或者在起初就直接克隆:git clone 仓库地址)

            其他命令:

            git内部原理图:

             每commit一次就会产生tree对象(暂存区当前目录树的快照)和commit对象,master分支指向最新的提交。

            

            git ls-files:查看暂存区有什么文件;

            git ls-tree HEAD 查看历史区有哪些文件

            git cat-file -p id:查看对象内容。

             

            

0 0