Git入门学习

      以前项目都用svn,最近用Git,但是本人对Git懵懵懂懂,所以特意安静下来,对Git做个简单的学习,在网上找到了廖雪峰老师的写的Git教程,网址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

     花了一天的时间进行学习,把廖老师提到的命令进行总结记录了一下,方便以后快速阅读、查看。下面描述的也可以通过CSDN进行下载,下载地址:https://download.csdn.net/download/zhengdesheng19930211/10293634

1.创建版本库
  git init
2.文件添加到仓库
   git add test.txt
   git commit -m ''
3.查看历史提交记录

  git log 或者 git log --pretty=oneline

4.查看命令历史
  
  git reflog

5.版本回退(假设现在已经提交了三个版本,版本ID分别为01wer,43refsd,453trt)
  回退到上一个版本:git reset --hard HEAD^
  回退到上上个版本:git reset --hard HEAD^^
  回退到上100个版本:git reset --hard HEAD~100
  根据版本ID来回退:git reset --hard 版本ID

6.查看git状态
 
  git status

7.git add是把文件提交到暂存区(stage) git commit是把文件提交到版本库

8.比较工作区和版本库的区别

  git diff HEAD -- test.txt

9.每次修改,如果不add到暂存区,那就不会加入到commit中。

10.当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时
   
   git checkout -- test.txt
   命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

   一种是test.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

   一种是test.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

   总之,就是让这个文件回到最近一次git commit或git add时的状态。

11.当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改

    git reset HEAD test.txt
    git checkout -- test.txt

12.删除版本库文件

    git rm test.txt
    git commit -m ''

13.恢复本地误删的文件恢复到最新版本

    git checkout -- test.txt

14.推送到远程,首先可以把ssh的公钥添加到远程仓库

15.在本地的仓库关联到github远程仓库:

    git remote add origin [email protected]:zhengdesheng/git_study

    git push -u origin master //当执行该命令如果出现failed to push some refs to '[email protected]:zhengdesheng/git_study.git'错误,需要先pull远程工程,命令是git pull origin master,如果该命令出现fatal: refusing to merge unrelated histories错误,因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码,在git pull,这句代码是在git 2.9.2版本发生的,最新的版本需要添加--allow-unrelated-histories,正确的命令应该是git pull origin master --allow-unrelated-histories,之后再次执行git push -u origin master

 16.克隆远程仓库

    git clone [email protected]:zhengdesheng/StudyGit.git

    Git支持多种协议,包括https,但是通过ssh支持的原生git协议速度最快

 17.分支

    查看分支:git branch

    创建分支:git branch 

    切换分支:git checkout 

    创建+切换分支:git checkout -b 

    合并某分支到当前分支:git merge 

    删除分支:git branch -d 

    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

    用git log --graph命令可以看到分支合并图

    禁用fast-forward合并分支:合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

18.bug 分支

     修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

      当手头工作没有完成时,先把工作现场

      git stash

      然后去修复bug,修复后,可以通过
      
      git stash list 

      查看原来stash的内容,之后可以通过

      git stash pop 或者

      git stash apply stash@{0} //执行后者命令的时候stash的内容不会删除,需要执行git stash drop来删除

      回到工作现场

19.Feature分支

	丢弃一个没有被合并过的分支:

	 git branch -D 

20.查看远程仓库信息

     git remote  或者  git remote -v

21.多人协作

	查看远程库信息,使用git remote -v;

	本地新建的分支如果不推送到远程,对其他人就是不可见的;

	从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

	在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

	建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

	从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

22.标签管理

       git tag 

       寻找历史体检的commit id

       git log --pretty=oneline --abbrev-commit

      对某次提交的版本进行版本标签管理

      git tag  commit_id

      查看标签信息

      git show 

      创建带有说明的标签,用-a指定标签名,-m指定说明文字

      git tag -a  -m ''  commit_id

      删除本地仓库的标签

      git tag -d 

      推送到远程

      git push origin 

      一次性推送全部尚未推送到远程的本地标签

      git push origin --tags

      删除远程仓库的标签

      git tag -d   //删除本地仓库的版本号

      git push origin :refs/tags/  //删除远程的标签

      本地同步远程的标签

      git fetch --tags

 23.文件忽略

      忽略某些文件时,需要编写.gitignore;

     .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
以上就是我总结的,有少许东西是自己补充的,里面有可能很多不足,忘各位进行指正!

你可能感兴趣的:(Git)