git 常用命令学习

我的环境:ubuntu14.04 + git 1.9.1

git的安装:ubuntu能够上网,使用apt-get install git 命令安装。

1.安装完成之后,首先需要设置名字和邮箱地址:

git config  --global user.name "xiaoyuzhou"

git config --global  user.emial "your email@example.com"

2. git init:这个命令可以将本地的一个目录初始化为git管理的仓库。

3. git add <filename>: 告诉git 把名字是filename的改动添加到仓库。这个添加是从工作区到暂存区的添加。(理解工作区和暂存区概念很重要)

4.  git commit -m <message>: 告诉git 把刚才的改动提交到仓库。-m 后面跟的是 本次提交的说明,起到提示的作用。使用例子:git commit -m "delete a word".

5. git status: 这条命令可以帮助我们时刻掌握仓库的状态。比如当我们修改了某个文件,使用这个命令可以提示我们那个文件做了修改。

6. git diff <filename>: 这条命令可以可以提示名字为filename的文件修改前后的内容。

7. git log --pretty=oneline :这条命令可以显示从最近到历史自己提交的日志。

8. git reset --hard  <commit_id>:这条命令可以帮助我们在提交的历史版本之间穿梭,git使用HEAD指针指向当前的commit_id,查看历史的commit_id可以使用git log命令;如果想重新返回未来的版本,需要借助git reflog命令来查看命令历史。最后使用git reset --hard <commit_id>命令来使HEAD指向历史的commit_id。
注意:git管理的是修改而不是文件,重要的事情说三遍!!!git 管理的是修改而不是文件,git管理的是修改而不是文件

9.git checkout <filename>:当我们在工作区修改了一个文件,但是发现这个修改是不妥的,而且这个修改我们发现的很及时还没有将修改放到暂存区,如果使用这条命令,相当于撤销修改。不过很不幸,如果发现已经提交到了暂存区。我们可以使用git reset HEAD <filename>,这条命令可以帮助我们将暂存区退回到工作区,在使用git checkout <filename> 这个命令可以丢到工作区的修改。

10. git rm <filename>:如果是从工作区删除一个文件 rm <filename>,但是已经提交到了暂存区,此时可以使用git  checkout <filename>恢复;如果我们确实想删除该文件,git rm <filename>就直接删除了该文件;如果是不小心删除的话,可以使用前面说的历史穿梭的命令:git reset --hard <commit_id>.

11.如果有了远程库之后,需要在本地生成ssh key的私钥和公钥,公钥添加到远程库;并且需要将本地和远程库关联:

    关联的命令:git remote add origin <远程库的https>;

    把本地仓库的内容推送到远程库:git push -u origin master ,第一次推送master分支的所有内容,然后可以登录github就可以看到和本地一样的内容了;此后,如果有需要继续提交就可以使用git push origin master.

     git clone <pathname>:从远程库克隆工程到本地。

12. git的分支管理:

    (1)创建与合并分支:
                  git checkout -b dev  //创建dev分支,并且切换到了dev分支(-b 参数的作用); -b 参数在此处相当于以下两条指令的作用:
                  git branch dev
                  git checkout dev
              (2) 切换之后可以使用git  branch查看当前的分支,该命令可以列出当前的所有分支,并切在当前分支的前面有一个*号。

   (3)此时在dev分支上,我们修改readme.txt文件,并且添加,提交,然后切换回mater分支:   git add <filename>; //添加
                  git commit -m <message>  //提交 
                  git checkout master   //切换回master分支。
                  然后打开修改的文件,发现在这分支上这个文件并没有被修改。
             (4)合并master和dev分支:
                 git merge <指定分支>:这条命令可以指定分支合并到当前分支。
            (5) 合并之后,删除dev分支:
                 git branch -d  <分支名字>:删除分支
        小结:
            查看分支:git branch 
            创建分支:git branch <name>
            切换分支: git checkout <name>  这两条命令可以使用 git checkout -b <name>来代替。
            合并某分支到当前分支:git merge <name>
            删除分支:git branch -d <name>

13.合并冲突:
    (1)当两条分支合并冲突时,需要手动解决冲突,再提交:
        git status 命令可以告诉我们冲突的文件是哪一个;
        git log --graph 命令可以查看合并之后的合并图。

14.分支管理策略:
    git 默认合并选择的是fast forward,这种方式合并看不出曾经做过合并,所以建议是在合并的时候加上参数--no-ff,这样就可以使用git log --graph 看到做过合并。

15.修复bug:
    (1)首先需要确定在哪个分支上修复bug,在需要修复bug的分支上创建一个新的临时分支。
    (2)当我们手头目前的工作还没有完成,并且不能提交,可以先把手头的工作git stash一下,保存手头的工作去处理bug.处理完bug,回到当前的分支,可以使用git stash list查看保存的工作现场。使用git stash pop来回复工作现场。回复之后,再次git stash list查看工作现场就没有了。

16.在软件开发的时候,如果开发一个新功能的话,通常是在一个临时分支上修改,开发完成之后,再合并,删除等操作。
    强制删除一个没有合并的临时分支,使用git branch -D <branch_name>。

17.多人合作模式:
    (1) 首先 在本地推送分支的时候,需要指定推送的本地分支:例如:git push origin master //把本地的origin分支推送到远程。但是并不是所有的分支都需要推送到远程,所以具体要推送哪些到远程:原则如下:
        master 分支是主分支,要时刻与远程同步;
        dev      分支是开发分支,所有成员都在上面工作,所以需要同步;
        bug     分支只用于在本地修复bug,没有必要推送到远程;
    多人合作的工作模式如下:
        a.首先试图使用 git push origin <branch_name>将本地分支推送到远程;
        b.如果推送失败的话,则是因为远程的分支比本地的要新,需要使用git pull试图合并;
        c.如果合并有冲突,需要解决冲突,并在本地提交;
        d.没有冲突或者解决掉冲突之后,再用git push origin <branch_name>就能推送成功;
            如果git pull提示no tracking information,说明本地分支和远程分支的关联没有创建,可以使用git branch --set-upstream-to <branch_name>  origin/<branch_name>

18.创建标签:
    (1) git tag <tagname> 用于创建一个标签,默认的是HEAD,也可以指定commit_id.
    (2) git tag -a <tagname> -m "balabala" 可以指定标签信息;
    (3) git tag 可以查看标签。
19. 操作标签:
    (1) 如果标签打错了,可以删除:git tag -d v1.0
    (2) git push origin <tagname>: 可以推送一个本地标签到远程
    (3) git push origin --tags: 可以推送本地所有未推送的标签到远程
    (4) git tag -d <tagname>:可以删除一个本地标签
    (5) git push origin :refs/tags/<tagname> 可以删除一个远程标签
20. github的使用:
    在github上自己可以任意的fork开源项目,fork之后,自己拥有该仓库的读写权限,可以推送pull request给官方库来贡献自己的代码。

21.git还有配置别名、忽略一些特殊文件操作等等。

主要参考的https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192廖雪峰老师的git教程,感谢分享!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值