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

    Git学习笔记

    初步设置

    git config --global user.name "Your Name"   //配置用户名
    git config --global user.email "email@example.com"  //配置邮箱
    

    创建版本库

    mkdir BruteDemo
    cd BruteDemo
    pwd
    git init    //把这个目录变成Git可以管理的仓库
    

    将文件添加到仓库

    git add ssh_brute.py    //将文件ssh_brute.py添加到仓库
    git commit -m "ssh brute demo"  //commit只会提交已经add的文件,-m后面输入的是本次提交的说明   
    

    获取仓库最新状态

    $ git status
    位于分支 master
    尚未暂存以备提交的变更:
      (使用 "git add <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
    
    	修改:     ssh_brute.py
    
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
    

    查看修改内容,#git test是修改内容

    $ git diff ssh_brute.py
    diff --git a/ssh_brute.py b/ssh_brute.py
    index e273cfa..80dec18 100644
    --- a/ssh_brute.py
    +++ b/ssh_brute.py
    @@ -1,4 +1,5 @@
     #coding=utf-8
    +#git test
     from pexpect import pxssh
     
     def coon(hostname,user,password):
    

    版本回退

    版本1:提交ssh_brute.py

    版本2:在ssh_brute.py中添加一行#git test

    查看commit历史版本

    $ git log
    commit 777cad51cfb2b0001faf73c82bcd146ffc7ba4af
    Author: mark-zh <mark.xiaoyuer@gmail.com>
    Date:   Thu Jun 20 11:01:45 2019 +0800
    
        change test
    
    commit b7415ca096c5eb12b94506e71c22343f2f3c1617
    Author: mark-zh <mark.xiaoyuer@gmail.com>
    Date:   Thu Jun 20 10:42:15 2019 +0800
    
        ssh brute demo
    
    

    简化输出

    git log --pretty=oneline
    

    回退到上一个版本,可以cat文件查看是否成功

    $ git reset --hard HEAD^
    HEAD 现在位于 b7415ca ssh brute demo
    

    回退到指定版本,git reset --hard id,版本号写前几位即可

    $ git reset --hard 777ca
    HEAD 现在位于 777cad5 change test
    $ git log --pretty=oneline
    777cad51cfb2b0001faf73c82bcd146ffc7ba4af change test
    b7415ca096c5eb12b94506e71c22343f2f3c1617 ssh brute demo
    

    查看版本回退记录

    $ git reflog
    777cad5 HEAD@{0}: reset: moving to 777ca
    b7415ca HEAD@{1}: reset: moving to HEAD^
    777cad5 HEAD@{2}: commit: change test
    b7415ca HEAD@{3}: commit (initial): ssh brute demo
    

    工作区和暂存区

    工作区:如BruteDemo文件夹就是一个工作区。

    版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git版本库。

    Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

    Git工作原理

    第一步git add添加文件,把文件修改添加到暂存区。

    第二步git commit提交更改,把暂存区的所有内容提交到当前分支。

    创建Git版本库时,Git自动为我们创建了唯一一个master分支,git commit就是往master分支上提交更改。

    管理修改

    撤销修改

    git checkout -- file
    git reset HEAD file
    

    删除文件

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

    误删恢复

    git checkout -- test.txt 
    

    远程仓库

    创建SSH key

    ssh-keygen -t rsa -C "youremail@example.com"
    

    然后登录github,的设置,Settings-- SSH keys,添加id_rsa.pub就ok

    添加远程仓库
    登录github,点击new repository,本地关联远程库

    git remote add origin git@github.com:mark-zh/BruteDemo.git
    

    第一次把本地库的所有内容推送到远程库

    git push -u origin master
    

    以后的每次推送

    git push origin master 
    

    从远程仓库克隆

    git clone target
    

    分支管理

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

    多人协作

    查看远程库信息

    git remote
    git remote -v   //显示详细信息
    

    抓取分支

    git clone  git@github.com:mark-zh/program.git
    

    创建开发分支

    git checkout -b dev origin/dev
    

    推送分支,把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支

    git push origin master
    git push origin dev     //推送dev分支到远程库
    

    提交冲突时,执行git pull获取最新origin/dev,本地合并,解决冲突,重新push

    git pull失败解决:原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接

    git branch --set-upstream-to=origin/dev dev
    

    报错问题解决

    • 当前分支的最新提交落后于其对应的远程分支
    error: 无法推送一些引用到 'git@github.com:mark-zh/BruteDemo.git'
    提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
    提示:再次推送前,先与远程变更合并(如 'git pull ...')。
    

    解决办法:先从远程库fetch到更新再和本地库合并

    git fetch origin    //获取远程更新
    git merge origin/master     //把更新的内容合并到本地分支
    
  • 相关阅读:
    [转]游戏开发指南
    [转]C++接口定义及实现举例
    [转]关于模板函数/模板类编译成DLL
    [转]游戏程序员要求
    [转]如何定位Release程序崩溃原因
    [转]对0基础MFC者的一点建议
    [转]链接警告 LNK4098
    动态调用WCF
    动态添加删除WCF服务类包
    将Xaml文档转成XPS文档[转]
  • 原文地址:https://www.cnblogs.com/mark-zh/p/11058953.html
Copyright © 2011-2022 走看看