zoukankan      html  css  js  c++  java
  • Git 命令总结

    Git 命令总结

     (2013-07-21 13:37:22)
    Git教程:
    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
     

    這篇主要是給自己做個記錄,因為 Git 指令實在太多了…

    1. Git 教學(1):Git的基本使用
    2. Git 教學(2):Git Branch 的操作與基本工作流程
    3. Git 情境劇:告訴你使用 Git 時什麼情況該下什麼指令

    4. 如何安裝 Git

      • Mac : 安裝 Homebrew

        brew install git
      • Linux(Debian) : apt-get install git-core
      • Linux(Fedora) : yum install git-core
      • Windows : 下載安裝 msysGit
    5. 如何設定 Git

    6. 如何開始一個 Git Respository

      • 在專案底下使用 git init 開始一個新的 Git repo.
      • 使用 git clone 複製一個專案
    7. 如何將檔案加入 Stage

      • 使用 git add 將想要的檔案加入 Stage.
      • git add . 會將所有編修過的檔案加入 Stage (新增但還沒 Commit 過的檔案並不會加入)
    8. 如何將檔案從 Stage 中移除(取消add)

      • git reset HEAD 檔案名稱
    9. 如何將檔案提交(commit)

      • 使用 git commit會將 Stage 狀態的檔案做 Commit 動作
      • git commit -m "commit訊息" 可以略過編輯器直接輸入 commit 訊息完成提交。
      • git commit -am "commit訊息" 等同於先git add .後略過編輯器提交 commit。
    10. 如何修改/取消上一次的 commit

      • git commit --amend 修改上一次的 commit 訊息。
      • git commit --amend 檔案1 檔案2... 將檔案1、檔案2加入上一次的 commit。
      • git reset HEAD^ --soft 取消剛剛的 commit,但保留修改過的檔案。
      • git reset HEAD^ --hard 取消剛剛的 commit,回到再上一次 commit的 乾淨狀態。
    11. 分支基本操作(branch)

      • git branch 列出所有本地端的 branch。
      • git branch -r 列出所有遠端的 branch。
      • git branch -a 列出所有本地及遠端的 branch。
      • git branch "branch名稱" 建立一個新的 branch。
      • git checkout -b "branch名稱" 建立一個新的 branch 並切換到該 branch。
      • git branch branch名稱 起始點 以起始點作為基準建立一個新的 branch,起始點可以是一個 tag,branch 或是 commit。
      • git branch --track branch名稱 遠端branch 建立一個 tracking 遠端 branch 的 branch,這樣以後 push/pull都會直接對應到該遠端的branch。
      • git branch --set-upstream branch 遠端branch 將一個已存在的 branch 設定成 tracking 遠端的branch。
      • git branch -d "branch 名稱" 刪除 branch。
      • git -r -d 遠端branch 刪除一個 tracking 的遠端 branch,例如git branch -r -d wycats/master
      • git push repository名稱 :遠端branch 刪除一個 repository 的 branch,通常用在刪除遠端的 branch,例如git push origin :old_branch_to_be_deleted
      • git checkout branch名稱 切換到另一個 branch(所有修改過程會被保留)。
    12. 遠端操作(remote)

      • git remote add remote名稱 remote網址 加入一個 remote repository,例如 git remote add github git://github.com/gogojimmy/test.git
      • git push remote名稱 :branch名稱 刪除遠端 branch,例如 git push origin :somebranch
      • git pull remote名稱 branch名稱 下載一個遠端的 branch 並合併(注意是下載遠端的 branch 合併到目前本地端所在的 branch)。
      • git push 類似於 pull 操作,將本地端的 branch 上傳到遠端。
    13. 合併操作(merge)

      • git merge branch名稱 合併指定的 branch 到目前的 branch。
      • git merge branch名稱 --no-commit 合併指定的 branch 到目前的 branch 但是不會產生合併的 commit。
      • git cherry-pick SHA 將某一個 commit 的內容合併到目前 branch,指定 commit 是使用該 commit 的 SHA 值,例如git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544
    14. 暫存操作(stash)

      • git stash 將目前所做的修改都暫存起來。
      • git stash apply 取出最新一次的暫存。
      • git stash pop 取出最新一次的暫存並將他從暫存清單中移除。
      • git stash list 顯示出所有的暫存清單。
      • git stash clear 清除所有暫存。
    15. 常見問題:

      • 我的 code 改爛了我想全部重來,我要如何快速回到乾淨的目錄?
        • git reset --hard 這指令會清除所有與最近一次 commit 不同的修改。
      • merge 過程中發生 confict 我想放棄 merge,要如何取消 merge?
        • 一樣使用 git reset --hard 可以取消這次的 merge。
      • 如何取消這次的 merge 回到 merge 前的狀態?
        • git reset --hard ORIG_HEAD 這指令會取消最近一次成功的 merge 以及所有你在這次 merge 後所做的修改。
      • 如何回復單獨檔案到原本 commit 的狀態?
        • git checkout 檔案名稱 這指令會將已經被修改過的檔案回復到最近一次 commit 的樣子。

    2

    1

     
    阅读(4146)┊ 评论 (0)收藏(0) 转载(2) ┊ 喜欢 打印举报
    已投稿到:
     
    http://blog.sina.com.cn/s/blog_605f5b4f010194fg.html
     
    #######################################################

    在使用git 处理对android的修改的过程之中总结的.但不完善

    Git push

    $ git push origin test:master         // 提交本地test分支作为远程的master分支

    $ git push origin test:test              // 提交本地test分支作为远程的test分支

    如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

    $ git push origin :test              // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心。

    举个例子:

           git push origin  :origin/Android_HK_K501_77-W916 //由于:前面为空所以本来在服务器上面存在的分支origin/Android_HK_K501_77-W916和Android_HK_K501_77-W916现在就只有一个了,因为分支origin/Android_HK_K501_77-W916被删除了,但是本地的还在

    常见错误:

    1.error:failed to push some refs to ...

    当要push代码到git时,出现提示:

    error:failed to push some refs to ...

    Dealing with “non-fast-forward” errors

    From time to time you may encounter this error while pushing:

    $ git push origin master 

    To ../remote/ 

     ! [rejected]        master -> master (non-fast forward) 

    error: failed to push some refs to '../remote/' 

    To prevent you from losing history, non-fast-forward updates were rejected

    Merge the remote changes before pushing again.  See the 'non-fast forward'

    section of 'git push --help' for details.

    问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:

    强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

    git push -f

    2. 先把git的东西fetch到你本地然后merge后再push

    $ git fetch

    $ git merge

    这2句命令等价于

    $ git pull 

    可是,这时候又出现了如下的问题:

    上面出现的 [branch "master"]是需要明确(.git/config)如下的内容

    [branch "master"]

        remote = origin

        merge = refs/heads/master

    这等于告诉git2件事:

    1,当你处于master branch, 默认的remote就是origin。

    2,当你在master branch上使用git pull时,没有指定remote和branch,那么git就会采用默认的remote(也就是origin)来merge在master branch上所有的改变

    如果不想或者不会编辑config文件的话,可以在bush上输入如下命令行:

    $ git config branch.master.remote origin 

    $ git config branch.master.merge refs/heads/master 

    之后再重新git pull下。最后git push你的代码吧。

    错误信息:error: object file .git/objects/c6/884991eaac39417e314faa6685061eab18909d is empty

    fatal: loose object c6884991eaac39417e314faa6685061eab18909d (stored in .git/objects/c6/884991eaac39417e314faa6685061eab18909d) is corrupt

    解决方法:

    1  rm .git/objects/c6/884991eaac39417e314faa6685061eab18909d

    2 .git fsck --full

    3.git reflog



     

    http://862123204-qq-com.iteye.com/blog/1683315
     
    others:
    http://www.cnblogs.com/hnrainll/archive/2013/04/03/2998524.html
    http://my.oschina.net/u/219482/blog/285584
    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
  • 相关阅读:
    docker的安装
    Linux的常用命令
    HTTP协议,HTTPS协议,Websocket协议
    常用排序
    go的数组,切片,map
    if-else,switch,for循环
    go的函数,包以及mode的补充
    Android学习笔记——从源码看Handler的处理机制
    ElementUI
    关于IO的理解
  • 原文地址:https://www.cnblogs.com/pengmn/p/4910975.html
Copyright © 2011-2022 走看看