git經常使用操做

git經常使用操做

第一次鏈接遠程倉庫的配置

配置user.name 和user.email

  • git config --global user.name "name" 設置你的用戶名git

  • git config --global user.email "emil" 設置用戶的email帳號github

生成密鑰

  • ssh-keygen -t rsa -C "your email" 其中填的是你的註冊的github的帳號,輸入以後若是不須要輸入密碼的話,連續輸入三個回車便可,最後在你的在終端輸入 cd ~/.ssh 進入到你的文件下能夠看到有兩個文件id_rsaid_rsa.pub,最後複製你的id_rsa.pub中的內容到github中的帳號中便可app

  • ssh -T git@github.com 若是上面的步驟已經完成了,那麼就是驗證是否完成了,輸入上述語句,若是出現信息,那麼證實說明你已經成功了ssh

管理修改

一般咱們在提交以後會想要修改,固然咱們是在文件上直接修改,可是修改後在git上輸入git status查看此時的工做區的狀態,你會發現出現了出現了以下的語句:fetch

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   file.txt

no changes added to commit (use "git add" and/or "git commit -a")

從上面的提示能夠看出咱們有以下方案:code

  • 首先執行->git add file.txt,而後從新提交git commit -m 'modified file.txtrem

撤銷修改(沒有提交的[commit])

這裏的撤銷修改僅僅是對於沒有提交的撤銷(git commit -m ''),在下面會講到如何撤銷提交後的撤銷get

git add

當咱們修改後會出現上面的提示,前面已經貼過了,這裏就再也不貼代碼了,根據提示,咱們能夠git checkout -- file.txt來丟棄工做區的修改,以後就能夠看見先前的修改已經不見了博客

已經git add

當咱們修改文件後而且git add 添加到暫存區了,那麼查看狀態git status,出現的提示以下it

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   file.txt

根據上面提示的方法:輸入git reset HEAD file.txt,能夠看到文件回到git add的狀態了,這時若是你想要丟棄修改,使用git checkout -- file.txt,以後就能夠看到你的修改已經不見了

刪除文件

其實刪除也是一種修改操做,咱們在文件管理器中直接使用rm刪除文件,這時輸入git status能夠看到以下的提示:

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    file.txt

no changes added to commit (use "git add" and/or "git commit -a")
PS G:\file> git checkout -- file.txt
  • 若是你不想刪除了,想要恢復原來的文件,使用git checkout -- file.txt 這個命令可讓撤銷修改,也能夠撤銷刪除,起到一鍵還原的做用

  • 若是你想要繼續刪除,那麼有兩種方法:

  1. first:git add file.txt,second:git commit -m ''

  2. first:git rm file.txt,second:git commit -m ''

注意: git rm file 能夠用來刪除提交到版本庫中的文件,通常刪除要執行如下命令:git rm file.txt,git commit -m 'delete',注意在git commit以前仍是能夠取消刪除的,使用git checkout -- file.txt,能夠一鍵取消刪除

建立與合併分支

經常使用命令:

  • git checkout -b dev 建立而且切換到dev分支

  • git checkout dev 切換到dev分支

  • git branch 查看全部的分支,帶有*的是當前所處的分支

  • git branch -d dev 刪除dev分支,通常在合併以後刪除

  • git branch -D dev :強制刪除分支,通常在沒有合併就刪除分支會出現不能刪除,這是就要使用強制刪除這個分支的命令

  • git merge devdev分支合併到當前分支,使用到Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。

  • git merge --no-ff -m "merge with no-ff" dev 強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就能夠看出分支信息。

  • git log --graph --pretty=oneline --abbrev-commit 查看分支歷史

建立合併

  • 首先咱們建立一個dev分支,使用命令:git checkout -b dev(建立一個dev分支,而且切換到dev分支上),咱們可使用git branch查看全部的分支

  • 如今在改變以前master分支上的file.txt文件內容,以後git add file.txt,而且提交到版本庫中了(git commit -m 'file.txt'),此時使用git checkout master切換到master分支上,查看file.txt的文件內容,能夠看到裏面的內容並沒有改變,由此可知兩個分支是獨立的,若是你在一個分之上建立了文件而且提交到版本庫中了,切換到另一個分支上,此時能夠發現原來建立的文件不見了,由於那是另一個分支的文件,固然咱們能夠合併分支,使用git merge dev,這兩個命令將dev分支合併到當前分支

Bug分支管理

若是正在一個分支上工做,另一個分支上的程序有一個Bug須要立刻修改,可是此時這個分支上的東西還須要很長時間才能完成,這應該怎麼辦呢?難道要放棄當前分支上的修改嗎?固然不是了,幸虧,Git還提供了一個stash功能,能夠把當前工做現場「儲藏」起來,等之後恢復現場後繼續工做,具體步驟以下:

  • git stash 將當前的工做狀態暫時存儲在stash中,輸出以下信息

Saved working directory and index state WIP on dev: 6224937 add merge
HEAD is now at 6224937 add merge
  • 此時可使用git status 查看當前的分支上的狀態,能夠知道當前的的工做區就是乾淨的,所以能夠放心的修復另一個分支上的的Bug

  • git checkout master 切換分支,修復Bug

  • git checkout dev 修復好Bug繼續回到上一個分支幹活

  • git stash list 能夠看到工做現場還在,輸出以下信息:

stash@{0}: WIP on dev: 6224937 add merge

若是有多個修改的內容,這裏的信息確定不止一條

  • git stash apply:恢復修改,可是這只是恢復stash的內容並不會刪除,這裏建議使用git stash pop 既恢復了又刪除了stash中內容,注意這裏只能恢復一條數據,此時使用git status查看狀態,能夠看到已經出現修改的內容了

  • git stash list :此時查看當前stash中的內容能夠看到已經什麼都沒了,固然這只是清除一條,若是原本有多個,那麼仍是會有其餘內容的

經常使用命令

  • git stash 將當前的分支上的工做暫存到stash

  • git stash list 列出stash中的全部暫存的內容

  • git stash pop 恢復而且刪除stash中的內容

  • git stash apply 恢復可是步刪除stash中的內容

遠程倉庫的操做

經常使用的命令

  • git remote -v 查看遠程倉庫的詳細信息

  • git remote add remote-name URL 添加遠程倉庫

  • git remote rename origin pb 將遠程倉庫的origin改成pb,此時使用git remote 查看能夠知道這裏已經沒有origin了,變成了pb

  • git remote rm origin 將遠程倉庫origin刪除

  • git push origin master 將內容提交到遠程倉庫origin的master上,固然這裏亦可使用其餘的分支

  • git clone URL 克隆一個遠程倉庫,這裏的URL是遠程倉庫的地址

  • git pull origin 將遠程倉庫中更新的數據拉到本地

  • git checkout -b branch-name origin/branch-name 在本地建立和遠程倉庫對應的分支,最好分支的名字相同

  • git push origin branch-name 推送到遠程倉庫的分支

注意

同一個文件夾中能夠添加不少遠程倉庫,不過能夠在提交的時候須要指定遠程倉庫的名字,好比在你的文件夾下有origin和pb兩個遠程倉庫,可使用git remote -v查看詳細的信息,此時你在版本庫中已經有想要推送的文件了,那麼使用git push origin master就能夠指定推送到origin遠程倉庫中

實例

假如你新建一個文件夾,此時要在裏面添加遠程倉庫,具體實現以下:

  • git clone URL 將一個倉庫克隆來的同時也具備推送的權限了,這時就可使用git remote add origin URL來添加遠程倉庫了

  • 若是沒有使用clone的方法建立一個版本庫,那麼先git init 而後git remote add origin URL 添加遠程倉庫,以後就是將本地倉庫和遠程倉庫對應了,使用git pull origin master 來拉取遠程倉庫中內容,固然這也能夠分兩步,使用以下:

  1. git fetch origin master 這是將遠程倉庫中的文件拉取到本地,可是沒有與本地的master合併,所以本地的master分支不能追蹤遠程倉庫中的分支

  2. git merge origin/master 將遠程倉庫和本地的master分支合併,那麼就可使用本地的master分支追蹤遠程倉庫了,這就完成了

  • 不管clone仍是pull都只是拉取遠程的master分支,可是通常遠程倉庫中還有其餘的分支,那麼怎麼辦呢?拉取遠程倉庫的次分支步驟以下:

  1. git checkout -b dev origin/dev 拉去遠程倉庫中的dev倉庫到本地的dev分支

想看更多文章請移步本人博客

相關文章
相關標籤/搜索