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_rsa
和id_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.txt
rem
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
這個命令可讓撤銷修改,也能夠撤銷刪除,起到一鍵還原的做用若是你想要繼續刪除,那麼有兩種方法:
first:
git add file.txt
,second:git commit -m ''
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 dev
將dev
分支合併到當前分支,使用到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須要立刻修改,可是此時這個分支上的東西還須要很長時間才能完成,這應該怎麼辦呢?難道要放棄當前分支上的修改嗎?固然不是了,幸虧,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
來拉取遠程倉庫中內容,固然這也能夠分兩步,使用以下:
git fetch origin master
這是將遠程倉庫中的文件拉取到本地,可是沒有與本地的master
合併,所以本地的master
分支不能追蹤遠程倉庫中的分支
git merge origin/master
將遠程倉庫和本地的master
分支合併,那麼就可使用本地的master
分支追蹤遠程倉庫了,這就完成了
不管
clone
仍是pull
都只是拉取遠程的master
分支,可是通常遠程倉庫中還有其餘的分支,那麼怎麼辦呢?拉取遠程倉庫的次分支步驟以下:
git checkout -b dev origin/dev
拉去遠程倉庫中的dev
倉庫到本地的dev
分支