文章出處

一.各種命令介紹: 

git pull:從其他的版本庫(既可以是遠程的也可以是本地的)將代碼更新到本地,例如:'git pull origin master'就是將origin這個版本庫的代碼更新到本地的master主枝,該功能類似于SVN的update

git add:是將當前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示記入了版本歷史中,這也是提交之前所需要執行的一步,例如'git add app/model/user.rb'就會增加app/model/user.rb文件到Git的索引中

git rm:從當前的工作空間中和索引中刪除文件,例如'git rm app/model/user.rb'

git commit:提交當前工作空間的修改內容,類似于SVN的commit命令,例如'git commit -m "story #3, add user model"',提交的時候必須用-m來輸入一條提交信息

git push:將本地commit的代碼更新到遠程版本庫中,例如'git push origin'就會將本地的代碼更新到名為orgin的遠程版本庫中

git log:查看歷史日志

git revert:還原一個版本的修改,必須提供一個具體的Git版本號,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本號都是生成的一個哈希值、

二.使用步驟及流程

創建新倉庫
git init
檢出倉庫
件來人肉合并這些 沖突(conflicts) 了。改完之后,你需要執行如下命令以將它們標記為合并成功:
git add <filename>
在合并改動之前,也可以使用如下命令查看:
git diff <source_branch> <target_branch>
串創建一個本地倉庫的克隆版本
git clone /path/to/repositoty
如果是遠程服務器上的倉庫
git clone username@host:/path/to/repository
件。已添加到緩存區的改動,以及新件,都不受影響。


假如你想要丟棄你所有的本地改動與提交,可以到服務器上獲取最新的版本并將你本地主分支指向到它:
git fetch origin
git reset --hard origin/master
你的本地倉庫由 git 維護的三棵“樹”組成。第一個是你的 工作目錄,它持有實際件;第二個是 緩存區(Index),它像個緩存區域,臨時保存你的改動;最后是 HEAD,指向你最近一次提交后的結果。
添加與提交
你可以計劃改動(把它們添加到緩存區),使用如下命令:
git add <filename>
git add *
這是 git 基本工作流程的第一步;使用如下命令以實際提交改動:
git commit -m "代碼提交信息"
現在,你的改動已經提交到了 HEAD,但是還沒到你的遠端倉庫。推送改動
你的改動現在已經在本地倉庫的 HEAD 中了。執行如下命令以將這些改動提交到遠端倉庫:
git push origin master
可以把 master 換成你想要推送的任何分支。 


如果你還沒有克隆現有倉庫,并欲將你的倉庫連接到某個遠程服務器,你可以使用如下命令添加:
git remote add origin <server>
如此你就能夠將你的改動推送到所添加的服務器上去
分支
分支是用來將特性開發絕緣開來的。在你創建倉庫的時候,master 是“默認的”。在其他分支上進行開發,完成后再將它們合并到主分支上
創建一個叫做“feature_x”的分支,并切換過去:
git checkout -b feature_x
切換回主分支:
git checkout master
再把新建的分支刪掉:
git branch -d feature_x
除非你將分支推送到遠端倉庫,不然該分支就是 不為他人所見的:
git push origin <branch>
更新與合并
要更新你的本地倉庫至最新改動,執行:
git pull
以在你的工作目錄中 獲取(fetch) 并 合并(merge) 遠端的改動。
要合并其他分支到你的當前分支(例如 master),執行:
git merge <branch>
兩種情況下,git 都會嘗試去自動合并改動。不幸的是,自動合并并非次次都能成功,并可能導致 沖突(conflicts)。 這時候就需要你修改這些文件來人肉合并這些 沖突(conflicts) 了。改完之后,你需要執行如下命令以將它們標記為合并成功:
git add <filename>
在合并改動之前,也可以使用如下命令查看:
git diff <source_branch> <target_branch>
替換本地改動
假如你做錯事(自然,這是不可能的),你可以使用如下命令替換掉本地改動:
git checkout -- <filename>
此命令會使用 HEAD 中的最新內容替換掉你的工作目錄中的文件。已添加到緩存區的改動,以及新文件,都不受影響。


假如你想要丟棄你所有的本地改動與提交,可以到服務器上獲取最新的版本并將你本地主分支指向到它:
git fetch origin
git reset --hard origin/master

三.錯誤匯總

1.windows使用git時出現:warning: LF will be replaced by CRLF

windows中的換行符為 CRLF, 而在linux下的換行符為LF,所以在執行add . 時出現提示,解決辦法:

  1. $ rm -rf .git  // 刪除.git  
  2. $ git config --global core.autocrlf false  //禁用自動轉換   

然后重新執行:

  1. $ git init    
  2. $ git add .  

2.git push origin master出錯:error: failed to push some refs to

很明顯是:

本地沒有update到最新版本的項目(git上有README.md文件沒下載下來)

本地直接push所以會出錯。

【解決過程】

1.看到提示里面,感覺是本地的代碼不是最新的。

所以覺得應該是類似于svn中的,先update一下,再去commit,估計就可以了。

所以先去pull試試:

git pull  --rebase origin master

解決!

 

3.Git: cannot checkout branch - error: pathspec '…' did not match any file(s) known to git

解決方案:傳送門

4.fatal: remote origin already exists.

解決辦法如下:

    1、先輸入$ git remote rm origin

    2、再輸入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不會報錯了!

    3、如果輸入$ git remote rm origin 還是報錯的話,error: Could not remove config section 'remote.origin'. 我們需要修改gitconfig文件的內容

    4、找到你的github的安裝路徑,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc

    5、找到一個名為gitconfig的文件,打開它把里面的[remote "origin"]那一行刪掉就好了!

 

 

    如果輸入$ ssh -T git@github.com
    出現錯誤提示:Permission denied (publickey).因為新生成的key不能加入ssh就會導致連接不上github。

    解決辦法如下:

    1、先輸入$ ssh-agent,再輸入$ ssh-add ~/.ssh/id_key,這樣就可以了。

    2、如果還是不行的話,輸入ssh-add ~/.ssh/id_key 命令后出現報錯Could not open a connection to your authentication agent.解決方法是key用Git Gui的ssh工具生成,這樣生成的時候key就直接保存在ssh中了,不需要再ssh-add命令加入了,其它的user,token等配置都用命令行來做。

    3、最好檢查一下在你復制id_rsa.pub文件的內容時有沒有產生多余的空格或空行,有些編輯器會幫你添加這些的。

 

 

    如果輸入$ git push origin master

    提示出錯信息:error:failed to push som refs to .......

    解決辦法如下:

    1、先輸入$ git pull origin master //先把遠程服務器github上面的文件拉下來

    2、再輸入$ git push origin master

    3、如果出現報錯 fatal: Couldn't find remote ref master或者fatal: 'origin' does not appear to be a git repository以及fatal: Could not read from remote repository.

    4、則需要重新輸入$ git remote add origingit@github.com:djqiang/gitdemo.git

 

 

    使用git在本地創建一個項目的過程

    $ makdir ~/hello-world    //創建一個項目hello-world
    $ cd ~/hello-world       //打開這個項目
    $ git init             //初始化 
    $ touch README
    $ git add README        //更新README文件
    $ git commit -m 'first commit'     //提交更新,并注釋信息“first commit”
    $ git remote add origin git@github.com:defnngj/hello-world.git     //連接遠程github項目  
    $ git push -u origin master     //將本地項目更新到github項目上去

 

   

    gitconfig配置文件

         Git有一個工具被稱為git config,它允許你獲得和設置配置變量;這些變量可以控制Git的外觀和操作的各個方面。這些變量可以被存儲在三個不同的位置: 
         1./etc/gitconfig 文件:包含了適用于系統所有用戶和所有庫的值。如果你傳遞參數選項’--system’ 給 git config,它將明確的讀和寫這個文件。 
         2.~/.gitconfig 文件 :具體到你的用戶。你可以通過傳遞--global 選項使Git 讀或寫這個特定的文件。
         3.位于git目錄的config文件 (也就是 .git/config) :無論你當前在用的庫是什么,特定指向該單一的庫。每個級別重寫前一個級別的值。因此,在.git/config中的值覆蓋了在/etc/gitconfig中的同一個值。
        在Windows系統中,Git在$HOME目錄中查找.gitconfig文件(對大多數人來說,位于C:\Documents and Settings\$USER下)。它也會查找/etc/gitconfig,盡管它是相對于Msys 根目錄的。這可能是你在Windows中運行安裝程序時決定安裝Git的任何地方。

 

        配置相關信息:

        2.1 當你安裝Git后首先要做的事情是設置你的用戶名稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:

  $ git config --global user.name "John Doe"

  $ git config --global user.email johndoe@example.com

 

       2.2    你的編輯器(Your Editor)

  現在,你的標識已經設置,你可以配置你的缺省文本編輯器,Git在需要你輸入一些消息時會使用該文本編輯器。缺省情況下,Git使用你的系統的缺省編輯器,這通常可能是vi 或者 vim。如果你想使用一個不同的文本編輯器,例如Emacs,你可以做如下操作:

  $ git config --global core.editor emacs

 

      2.3 檢查你的設置(Checking Your Settings)

  如果你想檢查你的設置,你可以使用 git config --list 命令來列出Git可以在該處找到的所有的設置:

  $ git config --list

      你也可以查看Git認為的一個特定的關鍵字目前的值,使用如下命令 git config {key}:

  $ git config user.name

 

      2.4 獲取幫助(Getting help)

  如果當你在使用Git時需要幫助,有三種方法可以獲得任何git命令的手冊頁(manpage)幫助信息:

  $ git help <verb>

  $ git <verb> --help

  $ man git-<verb>

  例如,你可以運行如下命令獲取對config命令的手冊頁幫助:

  $ git help config

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()