zoukankan      html  css  js  c++  java
  • git学习笔记

    http://git-scm.com/

    初步配置

    git config --global user.name "Your Name"
    git config --global user.email "email@example.com" 
    

    创建版本

    mkdir git
    cd /e/program
    pwd
    git init

    将文件添加到仓库

    git add file1.txt
    git add file2.txt
    git commit -m "wrote two files" 
    

     -m后面是本次提交的说明,commit只会提交已经add的文件,所以add的文件又再次修改的时候,commit并不会提交最新修改的。


    获取仓库最新状态

    git status
    

    当有文件被修改的时候,会有一个提示。 

    查看修改的具体情况

    git diff test.txt 

    版本回退

    查看已经提交过的commit版本

    git log
    

    如果信息太多,可以加上参数简化输出

    git log --pretty=oneline
    

    版本回退,其中HEAD^表示上一个版本,HEAD^^表示上上一个版本,HEAD~100表示前100个版本

    git reset --hard HEAD^
    

    回退后又需要回到一开始的地方(回退前的时候),在未关闭的窗口找到前面的commit id

    git reset --hard id
    

    如果窗口关闭了,找不到id,执行下面的命令,会列出你的每一次命令,前面的数字就是Id

    git reflog
    

    暂存区的理解:
    暂存区是.git版本库里面,会将git add添加的文件或者文件夹放在这里面,当commit的时候,会将里面的文件分别的更新到分支里面去。


    撤销修改

    修改了工作区的文件内容,想要丢弃修改的内容   

    git checkout -- file

    修改了工作区的文件内容,并且添加到缓存区,想要丢弃

    git reset HEAD file
    git checkout -- file 
    

      


    删除文件

    本地操作的文件是工作区,git仓库里面的代码是版本库
    删除文件

    git del test.txt
    git commit -m "del test.txt"
    

    当在工作区误删的时候,可以将版本库里面的文件恢复到工作区

    git checkout -- test.txt 
    

    远程仓库

    生成密钥和公钥

    ssh-keygen -t rsa -C "iamstudy@126.com"
    

    生成的时候那个密码可不用设置
    然后进github的设置--ssh keys---add ssh key
    标题任意,公钥在刚刚生成的文件id_rsa.pub里面,然后添加就ok

    git remote add origin git@github.com:l3m0n/test.git
    

    其中远程库是origin
    第一次将本地库的所有内容推送到远程库:

    git push -u origin master 
    

    以后的每次更新:

    git push origin master 
    

    从远程库克隆到本地

    git clone git@github.com:l3m0n/test.git
    

    分支管理

    创建属于自己的开发路线,直到最后全部提交

    查看分支:git branch
    创建分支:git branch name
    切换分支:git checkout name
    创建+切换分支:git checkout -b name
    合并某分支到master:git merge name
    删除分支:git branch -d name


    解决冲突

    分支和master都有修改且修改内容不一致,这时候合并起来就会产生冲突

     可以看到合并情况,找到问题点
    git log --graph --pretty=oneline --abbrev-commit
    修复问题后再次提交,然后删除分支
    git branch -d feature1


    不使用Fast forward模式合并

    git merge --no-ff -m "merge with no-ff" dev
    这样的合并会有历史纪录,如果不佳--no-ff就没有记录


    bug分支

    dev目前工作分支,master主枝,issue-101修复bug分支
    快照当前工作现场
    git stash
    切换到master
    git checkout master
    创建并切换分支
    git checkout -b issue-101
    修改提交
    git add readme.txt
    git commit -m "fix bug 101"
    切换到master,合并分支
    git checkout master
    git merge --no-ff -m "test" name
    删除分支
    git branch -d issue-101
    切换到工作分支
    git checkout dev
    查看快照
    git stash list
    恢复原来工作现场

    git stash apply
    但是stash不会删除,下面删除stash
    git stash drop

    git stash pop
    恢复并删除

    如果有多个stash,查看list后选择恢复
    git stash apply stash@{0}


    开发新功能

    创建并切换
    git checkout -b feature-vulcan
    添加提交后
    git add vulcan.py
    git commit -m "add feature vulcan"
    切换到dev分支
    git checkout dev
    丢失一个没有被合并过的分支
    git branch -D feature-vulcan


    多人协作

    origin是远程库,dev是本地分支
    查看远程库信息
    git remote
    更加详细的信息
    git remote -v

    推送分支
    git push origin dev

    小伙伴clone后想要在dev上工作
    git checkout -b dev origin/dev

    当你和小伙伴同时推送同一文件。内容却不相同
    先获取最新origin/dev提交
    git pull
    如果git pull失败,可能是没dev和远程链接上
    git branch --set-upstream dev origin/dev
    然后就是本地合并,解决冲突,再push

    大致流程:

    1. 首先,可以试图用git push origin branch-name推送自己的修改;
    2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    3. 如果合并有冲突,则解决冲突,并在本地提交;
    4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
    5. 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。

    标签操作

    命令git tag name用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    -a tagname -m "blablabla..."可以指定标签信息;
    -s tagname -m "blablabla..."可以用PGP签名标签;
    命令git tag可以查看所有标签;

    命令git push origin tagname可以推送一个本地标签;
    命令git push origin --tags可以推送全部未推送过的本地标签;
    命令git tag -d tagname可以删除一个本地标签;
    命令git push origin :refs/tags/tagname可以删除一个远程标签。


    配置别名

    将status别名成st
    git config --global alias.st status


    搭建git服务器

    sudo apt-get install git
    sudo adduser git
    sudo git init --bare sample.git
    sudo chown -R git:git sample.git

    编辑/etc/passwd文件 完成。找到类似下面的一行: git:x:1001:1001:,,,:/home/git:/bin/bash
    改为:
    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

    克隆远程仓库
    git clone git@server:/srv/sample.git

    know it then do it

    参考:http://www.cnblogs.com/iamstudy/articles/git_notice.html
  • 相关阅读:
    BZOJ 1002 轮状病毒
    poj_1952最大下降子序列,统计个数
    poj_3468线段树成段更新求区间和
    hdu_4707
    uva_644暴力加字典树解法
    正则表达式:处理文本内容中特定的字符串
    grep:文本搜索工具
    分析文本的工具:wc,sort,uniq,diff和patch
    按列抽取文本cut和合并文件paste
    显示文本前或后行内容:head,tail
  • 原文地址:https://www.cnblogs.com/Tu9oh0st/p/8997002.html
Copyright © 2011-2022 走看看