Git

作者: 涵仔睡觉 | 来源:发表于2019-08-21 00:02 被阅读0次

    Github

    创建目录:

    mkdir learngit
    

    把这个目录变成Git可以管理的仓库:

    git init
    

    把文件添加到仓库:

    git add <file>
    

    把文件提交到仓库:

    git commit
    git commit -m "本次提交说明"
    

    仓库当前的状态: (告诉我们哪些文件被修改了)

    git status
    

    查看修改内容:

    git diff
    

    查看历史记录:

    git log
    git log  --pretty=oneline   (每个记录在一行显示)
    

    版本回退:

    git reset --hard HEAD^
    

    在Git中,用HEAD表示当前版本,也就是最新提交的commitid,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。


    版本回退,回退版本之前的版本都不见了

    • 若命令行窗口还未关闭,则可以查看某个版本的commit id,用以下命令恢复:
    git reset --hard <commit id>
    

    版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

    • 若已经关闭,以下命令记录每一次命令:
    git reflog
    

    丢弃工作区的修改:

    git checkout -- filename
    

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

    把暂存区的修改撤销掉:

    git reset HEAD filename
    

    工作区删除文件:

    rm filename
    

    从版本库中删除该文件:

    git rm filename    
    git commit -m "......."
    

    把误删的文件恢复到最新版本:

    git checkout -- filename
    

    本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

    • 创建SSH Key:
    ssh-keygen -t rsa -C "youremail@example.com"
    

    你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

    • 登陆GitHub,打开“Account settings”,“SSH Keys”页面。然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”。

    在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得:

    • 登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。目前在GitHub上的这个learngit仓库还是空的
    • 把一个已有的本地仓库与GitHub上的learngit仓库关联:
    git remote add origin git@github.com:chenhan2015/learngit.git
    

    远程库的名字就是origin

    • 把本地库的所有内容推送到远程库上:
    git push -u origin master
    

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

    此后,每次本地提交后,只要有必要,就可以使用命令推送最新修改

    git push origin master
    
    • 从远程库克隆一个仓库gitskills.git到本地:
    git clone git@github.com:chenhan2015/gitskills.git
    

    查看分支:

    git branch
    

    创建分支:

    git branch <name>
    

    切换分支

    :git checkout <name>
    

    创建+切换分支:

    git checkout -b <name>
    

    合并某分支到当前分支:

    git merge <name>
    git merge --no-ff -m "merge with no-ff" <name>
    

    删除分支:

    git branch -d <name>
    

    如果要丢弃一个没有被合并过的分支,可以通过以下命令强行删除:

    git branch -D <name>
    

    查看分支合并图:

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

    把当前工作现场“储藏”起来:

    git stash
    

    查看工作现场:

    git stash list
    

    恢复工作现场:

    git stash apply
    

    删除工作现场:

    git stash drop
    

    恢复并删除工作现场:

    git stash pop
    

    可以多次stash,恢复的时候,先用

    git stash list
    

    查看,然后恢复指定的stash,用命令:

    $ git stash apply stash@{0}
    

    多人协作的工作模式通常是这样:

    • 首先,可以试图推送自己的修改
    git push origin branch-name
    
    • 如果推送失败,则因为远程分支比你的本地更新,需要先试图合并
    git pull
    
    • 如果合并有冲突,则解决冲突,并在本地提交;

    • 没有冲突或者解决掉冲突后,再推送就能成功:

    git push origin branch-name
    

    如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令

    git branch --set-upstream branch-name origin/branch-name
    

    • 查看远程库信息,使用
    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
    

    如果有冲突,要先处理冲突。


    • 新建一个标签:
    git tag <name>
    

    默认为HEAD,也可以指定一个commit id;

    • 指定标签信息:
    git tag -a <tagname> -m "blablabla..."
    
    • 用PGP签名标签:
    git tag -s <tagname> -m "blablabla..."
    
    • 查看所有标签:
    git tag
    
    • 看到说明文字:
    git show <tagname>
    
    • 推送一个本地标签
    git push origin <tagname>
    
    • 推送全部未推送过的本地标签
    git push origin --tags
    
    • 删除一个本地标签
    git tag -d <tagname>
    
    • 删除一个远程标签
    git push origin :refs/tags/<tagname>
    

    在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
    .gitignore文件无法添加,可以加-f强制添加到Git:

    git add -f filename
    

    检查.gitignore文件规则:

    git check-ignore -v filename
    

    配置别名:

    git config --global alias.st status
    

    --global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用,Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中。
    不加--global参数,那只针对当前的仓库起作用,每个仓库的Git配置文件都放在.git/config文件中。
    别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。

    相关文章

      网友评论

          本文标题:Git

          本文链接:https://www.haomeiwen.com/subject/pprvsctx.html