zoukankan      html  css  js  c++  java
  • 项目版本管理 github简介

    git config user.email "c.wuliying@samsung.com"
    git config user.name "swportal"

    ***创建版本库 init:
    初始化一个Git仓库
    mkdir test
    cd test
    git init
    ls-ah

    ***新增和提交文件git add,git commit -m
    用editplus编辑readme.txt文件,内容如下
    Git is a version control system.
    Git is free software.
    保存时UTF-8

    文件添加到仓库,分2步
    git add readme.txt
    git commit -m "wrote a readme file"


    ***修改文件, 及查看修改git status, git diff
    修改文件readme.txt
    Git is a distributed version control system.
    Git is free software.
    查看修改结果
    git status
    修改的具体内容:
    git diff
    应用修改
    git add readme.txt
    git status
    git commit -m "add distributed"
    git status

    ***查看修改记录 git log/reflog,git reset --hard HEAD^/commit id:
    git log --pretty=oneline
    前7位是commit id
    7ff16bc60ea13cb04fa8a69495decaa5105134f9 append GPL
    0473748ff85b3ddb17ebb1d9cb0e44009e18c13d add distributed
    7571ecadf145e2135beda18f98612845224d2e81 wrote a readme file

    回退到上一个版本
    git reset --hard HEAD^
    查看log, 发现最后一次的结果已经不存在了
    git log --pretty=oneline
    结果
    0473748ff85b3ddb17ebb1d9cb0e44009e18c13d add distributed
    7571ecadf145e2135beda18f98612845224d2e81 wrote a readme file
    找回最后那个版本,还没关机的时候, 就可以用commit id找回
    git reset --hard 7ff16bc
    如果关机了
    git reflog

    ***工作区和暂存区git add --> git commit
    .git是Git的版本库, 包含stage暂存区, master分支, 及指向master的指针HEAD
    我们修改readme.txt,新增一个文件license.txt, 然后
    git add readme.txt
    git add license.txt
    git status查看
    new file: license.txt
    modified: readme.txt

    add命令实际上就是将修改放到暂存区stage, 然后git commit才提交到分支
    git commit -m "understand how stage works"
    所以commit的作用是, 把暂存区stage的内容一次性提交到仓库
    如果修改文件, add, 再修改, commit,只会提交第一次修改的结果, 因为第二次修改的没有add, 就没有放入暂存区


    ***撤销修改, 把stage的修改退回 git checkout
    如果仅仅是改了readme.txt, 加一句话
    My stupid boss still prefers SVN.
    还没add到暂存区的话直接撤销
    git checkout -- readme.txt

    如果add到暂存区, 需要
    git reset HEAD readme.txt之后执行
    git checkout -- readme.txt


    ***删除文件
    先新建一个test.txt, 然后add,commit
    git add test.txt
    git commit -m "add test.txt"

    1. 工作区删除
    rm test.txt
    想恢复直接
    git checkout -- test.txt

    2. 暂存区 git rm之后反悔
    git rm test.txt
    git reset HEAD test.txt
    git checkout -- test.txt

    3. 确实删除
    git rm test.txt
    git commit -m "remove test.txt"

    4. 如果确实删除了, 还想找回来
    git log得到add test.txt的commit id: 2285503
    git reset --hard 2285503


    ***远程仓库
    ssh-keygen -t rsa -C "c.wuliying@samsung.com"
    一路回车, 在c:/Users/Administrator/.ssh/里生成 id_rsa和id_rsa.pub两个文件
    https://github.com/settings/ssh new ssh,title随便写
    里面把id_rsa.pub内容copy进去, 然后填写密码
    GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了
    先创建README,add并commit
    $touch README
    $git add README
    $git commit -m 'first commit'
    $git remote add origin git@github.com:swportal/test.git
    确认
    $git remote -v
    $git push -u origin master
    如果失败的话, 在C:UsersAdministrator.ssh里新增config文件, 内容为
    Host github.com
    User c.wuliying@samsung.com
    Hostname ssh.github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
    Port 443
    以后提交不用 -u, 直接
    $git push origin master

    ***从远程库clone
    1. 远程github新建一个repository test2,
    2. git clone git@github.com:swportal/test2.git
    就会在当前文件夹内新建个test2文件夹, 里面内容就是github里的内容

    ***创建与合并分支
    在Git里, 有个主分支master指向提交commit, HEAD指向master, HEAD指向的是当前分支
    所以随着每次提交, master和HEAD都往前走。
    但是如果你自己需要开发一个新功能, 需要很长时间, 想保存每次提交的结果, 但是每次提交会影响别人的结果。 但是不提交的话怕保留不了自己的每天进度, 所以要用分支

    查看分支:git branch
    创建分支:git branch <name>
    切换分支:git checkout <name>
    创建+切换分支:git checkout -b <name>
    合并某分支到当前分支:git merge <name>
    删除分支:git branch -d <name>
    所以要做的是
    1. 创建新分支dev并切换到dev分支
    $git checkout -b dev
    2. 对工作区的修改和提交都是针对dev,查看当前所有分支
    $git branch
    3. 修改自己的文件readme.txt, 添加一句 Creating a new branch is quick. 然后add, commit
    $ git add readme.txt
    $ git commit -m "branch test"
    4. 切换回master,查看刚才修改的文件内容并没有改变,因为还没有合并
    $ git checkout master
    $ cat readme.txt
    3. 合并dev和master
    $ git merge dev
    $ cat readme.txt
    4. 删除dev分支
    $ git branch -d dev
    $git branch
    总结:
    1. 新建并切换到自己的dev分支 $git checkout -b dev
    2. 改文件readme.txt,
    $ git add readme.txt
    $ git commit -m "branch test"
    3. 切换到主分支master $ git checkout master
    4. 合并dev和主分支master: $ git merge dev
    5. 删除自己的分支dev: $ git branch -d dev

    ***分支冲突
    1. $ git checkout -b feature1
    2. 修改readme.txt添加一行 Creating a new branch is quick AND simple.
    3. 分支feature1上add和commit
    $ git add readme.txt
    $ git commit -m "AND simple"
    4. 切换到master主分支
    $ git checkout master
    5. 在master分支上 修改readme.txt添加一行 Creating a new branch is quick & simple. 然后add并commit
    $ git add readme.txt
    $ git commit -m "& simple"
    6. 此时合并的话, 将出现冲突
    $ git merge feature1
    查看readme.txt文件, 发现
    <<<<<<< HEAD
    Creating a new branch is quick & simple.
    =======
    Creating a new branch is quick AND simple.
    >>>>>>> feature1
    7. 手动修改readme.txt文件, 再add和commit, 查看分支的合并情况
    $ git log --graph --pretty=oneline --abbrev-commit
    8. 删除feature1分支
    还没merge的分支想强性删除, 用
    $ git branch -D feature-1


    ***Bug分支
    当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场
    1. $git checkout -b dev 当前需要很长时间的工作, 修改release.txt文件, 然后add
    1. $git status 查看当前 已经add还没commit的任务 比如修改了release.txt文件, add并没commit
    2. $ git stash 当前任务藏起来
    3. $git status 查看是不是干净了?
    4. $ git checkout master 切换到master
    $ git checkout -b issue-101 在master上创建临时分支
    5. 临时分支上修改readme.txt文件,然后add和commit
    $ git add readme.txt
    $ git commit -m "fix bug 101"
    6. $ git checkout master 切换到master分支
    $ git merge --no-ff -m "merged bug fix 101" issue-101 完成合并
    $ git branch -d issue-101 删除分支
    7. $ git checkout dev 回到原来分支
    $ git status 查看当前状态
    $ git stash list 刚才的工作现场存到哪去了?
    8. $ git stash pop 恢复现场
    获取list后也可以这样恢复 $ git stash apply stash@{0}
    $ git stash list 就看不到任何stash内容了


    Myeclipse安装egit插件
    1. 关闭myeclipse
    2. F:java oolegit里的文件复制到 D:Program FilesMyEclipseMyEclipse 10dropinsegit下
    3. 重启eclipse, 在preferences里Team->Git确认
    4. 右键项目->team-->share
    5. 右键项目->team->commit

  • 相关阅读:
    MSsql bcp
    mssql 动态行转列。
    Ms sql 2000互转2005
    Ms sql pivot unpivot
    Ms sql将首字母大写
    java 进制相互转换
    Java 对字符反转操作。
    java jdbc 封装。。
    java SimpleDateFormat
    《more effective C++》条款10 防止构造函数里的资源泄露
  • 原文地址:https://www.cnblogs.com/wujixing/p/6150431.html
Copyright © 2011-2022 走看看