• Git上传相关资料


      1 ############ssh key及 配置信息#############
      2 设置Git的user name和email:
      3 $ git config --global user.name "memory.qiu"
      4 $ git config --global user.email "qiuhanjiang1986@163.com"
      5 
      6 生成SSH密钥过程:
      7 1.查看是否已经有了ssh密钥:cd ~/.ssh
      8 如果没有密钥则不会有此文件夹,有则备份删除
      9 2.生存密钥:$ ssh-keygen -t rsa -C “haiyan.xu.vip@gmail.com”
     10 按3个回车,密码为空
     11 .在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥
     12 
     13 
     14 #############本地初始化一个目录为代码仓库##################
     15 git init  初始化仓库
     16 1、创建一个新目录作为代码仓库
     17 2、执行 git init;
     18    执行之后会发现多了一个.git目录
     19    这就说明仓库已经初始完成
     20 3、在github上创建一个新的代码仓库(创建对应的代码仓库)
     21 4、git remote add origin git@github.com:memoryqiu/memory2017.git  
     22 5、正常提交代码即可。   
     23 
     24 
     25 
     26 ########克隆一个项目#######
     27 https  速度慢、需要输入账号和密码/ ssh 会被公司限制 两种协议
     28 要克隆一个仓库,首先必须知道仓库的地址,后使用git clone命令克隆然。
     29 git clone git@github.com:michaelliao/gitskills.git
     30 Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
     31 
     32 git clone https://github.com/memoryqiu/memory2015.git
     33 or
     34 git clone git@github.com:memoryqiu/memory2015.git
     35 
     36 通常推荐大家直接git clone 一个项目的方式来创建本地的代码仓库!
     37 
     38 演示一下在github上如何创建一个代码仓库!!!
     39 
     40 
     41 ###############创建分支################
     42 Git鼓励大量使用分支:
     43 
     44 创建分支:git branch <name> (默认当前所在分支为基础分支,可以指定其它分支)
     45 
     46 切换分支:git checkout <name>
     47 
     48 创建+切换分支:git checkout -b <name> <基础分支名称>(origin/master)
     49 
     50 提交刚创建的分支:git push origin branch-name
     51 
     52 
     53 更新分支:Git pull origin branchname  or Git fetch origin branchname  git merge --no-ff 目标分支 
     54 
     55 
     56 合并某分支到当前分支:git merge --no-ff <branch1分支名称>(把分支branch1合并到当前分支上)
     57 
     58 git merege (fast forward  and --no-ff )
     59 
     60 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
     61 
     62 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
     63 
     64 请注意--no-ff参数,表示禁用Fast forward请注意--no-ff参数,表示禁用Fast forward
     65 
     66 git merge --no-ff -m "merge with no-ff" dev
     67 
     68 因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去
     69 
     70 
     71 查看本地分支:git branch  or git branch -l
     72 查看远程分支:git branch -r
     73 查看所有分支(本地+远程):git branch -a
     74 带*的分支为当前工作的分支
     75 
     76 删除本地分支:
     77 git branch -d branchnamne
     78 or
     79 git branch -D  branchname 强制删除
     80 
     81 删除远程分支:
     82 Git push origin --delete branchname (删除远端分支branchname)
     83 Git push origin :branchname (直接删除远端分支branchname)
     84 
     85 获取远程仓库的分支(本地没有的分支)
     86 git pull origin $branch:$branch
     87 实例:git pull  origin  branchname:branchname
     88 ############git commit####################
     89 git commit -m''   只会提交已经git add过的文件(包括新增、修改、删除等所有修改操作)
     90 git commit -a -m'' 会提交除新增未add的文件之外的所有修改操作
     91 
     92 
     93 
     94 #############git diff ####################
     95 Git diff  filename  显示本地文件修改的内容同版本库的差别
     96 Git diff  branchone   branchtwo  对比两个branch不同之处
     97 Git diff  tagone  tagtwo    对比两个tag 不同之处
     98 
     99 
    100 
    101 ########删除文件###########
    102 在本地直接删除文件
    103 1、rm  file  (工作区中文件删除)
    104 2、git add file (文件删除的状态添加到暂存区中)
    105 3、git commit   (提交文件删除的状态到本地的版本库中)
    106 以上三步可以缩减为两步:
    107 1、git rm file (直接把删除的文件添加到暂存区中)
    108 2、git commit   (提交文件删除的状态到本地的版本库中)
    109 #############删除文件###############
    110  1、git rm filename  然后 git commit 即可
    111  2、rm filename  / git add  / git commit 
    112  git rm filename 就是 rm filename 的简化版
    113  
    114  
    115  
    116 
    117 ########查看当前工作区修改状态#######
    118 git status;
    119 要随时掌握工作区的状态,
    120 使用git status命令
    121 如果git status告诉你有文件被修改过,
    122 
    123 用git diff可以查看修改内容。
    124 git diff 默认查看所有被修改过的文件(不包括新增未add的文件)
    125 git diff filename (查看具体某个文件的修改内容 )
    126 
    127 
    128 
    129 ###########查看log记录#####
    130 git log  默认列出之前提交过记录(根据提交时间由近到远排列)
    131 git log -n  列出指定提交次数的记录
    132 git log --pretty=oneline  列出简单记录信息(commitid 和 提交注释)
    133 
    134 git reflog -n 查看指定次数的提交操作的记录信息(commitid)
    135 
    136 log  and  reflog
    137 两者都是查看所有的commit操作的记录,log查看不到reset回退时跳过的commit操作的commitid
    138 (可以夸版本回退一次,进行实际演示)
    139 git log
    140 git reflog
    141 git reset --hard commitid
    142 git log
    143 git reflog
    144 
    145 git log  --graph  可以查看分支合并图
    146 
    147  
    148 #########撤回和回滚#######
    149 1、在工作区内修改了文件但没有提交到暂存区撤销所有修改:
    150 git checkout -- file.name   可以丢弃工作区的修改 ,只针对已跟踪的文件
    151 git checkout -- file        命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令
    152 
    153 2、文件已经添加到暂存区撤回:
    154 git reset HEAD file
    155 or
    156 git rm --cached filename
    157 
    158 3、文件已经提交到了本地的版本库且未推向远端的版本库中:
    159 git reset --hard HEAD~n
    160 or
    161 git reset --hard commitid(推荐)
    162 HEAD 表示提交的最新版本。HEAD^表示上一个版本,HEAD^^表示上上个版本。HEAD~100表示往上100个版本。
    163 (上两个版本 HEAD~2)
    164 4、文件已经从本地仓库推倒远程仓库的回退
    165   git log  or git reflog 找到目标版本
    166   git reset --hard commitid
    167   git push -f origin master  (-f 参数是强制覆盖的意思,没有该参数会推送失败,因为远程仓库的版本高于当前版本)
    168   
    169   git revert commitid
    170   
    171   
    172 git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留
    173 git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区
    174   
    175 团队开发时,版本回退一定要通知其他人员!如果其他同事在每次提交前没有先更细后提交的意识或习惯的话,回退是白费功夫。
    176 
    177 http://yijiebuyi.com/blog/8f985d539566d0bf3b804df6be4e0c90.html
    178 
    179 
    180 
    181 
    182 ######################状态冻结####################
    183 git stash       冻结当前修改状态
    184 git  stash list  列出总结列表
    185 git  stash pop   可以按版本恢复某个冻结状态并删除
    186 git  stash apply   只是按某个版本恢复某个冻结状态不删除
    187 git  stash drop     删除指定某个冻结状态
    188 
    189 
    190 
    191 ####################tag管理#####################
    192 创建tag: 
    193 git tag -a tagname  -m “添加tag的描述信息”  (tag要有个规则标识例如:feature_abc_v1.1 ,给当前分支打一个tag名为tagname)
    194 
    195 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    196 
    197 提交创建的tag:
    198 git push origin tagname (同提交分支操作一样)
    199 
    200 命令git tag可以查看所有标签。
    201 查看tag:
    202 git tag  
    203 or
    204 git tag -l 
    205 
    206 查看标签的具体信息:
    207 git show tag-name
    208 
    209 删除标签:
    210 Git tag -d tagname (本地删除)
    211 Git push orign (空格):refs/tags/tagname (把删除的tag提交到远端)
    212 删除标签实例:
    213 git tag -d v0.9
    214 git push origin :refs/tags/v0.9
    215 
    216 获取远程仓库的tag信息(本地没有)
    217 git fetch origin tag $tag
    218 
    219 
    220 
    221 
    222 ##########同远程仓库关联#########
    223 查看当前代码关联的远程仓库信息
    224 git remote  直接回车,列出所有关联的远程仓库
    225 
    226 git remote -v  回车 列出每个远程仓库名及对应的仓库地址url
    227 
    228 git remote add [shortname] [url]: 添加同一个远程仓库的关联关系
    229 
    230 git remote remove shortname : 删除同一个远程仓库的关联关系
    231 
    232 
    233 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
    234 
    235 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
    236 
    237 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
    238 
    239 分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!
    240 当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
    241 
    242 
    243  .gitignore规则不生效的解决办法
    244 把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:
    245 git rm -r --cached .
    246 git add .
    247 git commit -m 'update .gitignore'
  • 相关阅读:
    bzoj 2832
    洛谷5月月赛
    P4705 玩游戏
    【bzoj4817】[Sdoi2017]树点涂色&&bzoj3779-重组病毒
    A
    P4715 「英语」Z 语言
    P4714 「数学」约数个数和
    P2860 [USACO06JAN]冗余路径Redundant Paths
    【BZOJ3252】攻略
    BZOJ 1706
  • 原文地址:https://www.cnblogs.com/songbao/p/11394059.html
Copyright © 2020-2023  润新知