首先下載git軟件安裝,點此下載。
在安裝完git之后,打開Git Bash的快捷方式,進入命令行模式。
2、配置首先我們需要創建一個git倉庫的文件夾。
mkdir git
接著創建一個你的工程文件夾,例如是PRoject.
cd git && mkdir project
然后我們進入git文件夾,進行初始化操作。
cd gitgit initgit config --global user.name "yourname"git config --global user.email "youremail"
此時將會在你的git文件夾下生成.git文件,該文件的作用是將會對你上傳的代碼文件進行取舍,將一些調試用的文件排除。
3、下載此后,可以進入你的project文件夾,根據遠程git倉庫的地址,clone一組代碼回來。
git clone https://git.oschina.net/.../...git
或者你可以把你的文件放在project文件夾下,然后,和遠端git倉庫中的代碼進行合并。
git pull https://git.oschina.net/.../...git
4、上傳當你修改完你project中的文件后,你需要首先將你的改動提交到你的本地的倉庫中。
git add .git commit -m "your comments"
然后就可以push到你的遠程的倉庫中(在這之前,首先需要增加一個遠程倉庫的位置)。
git remote add origin https://git.oschina.net/.../...gitgit push -u origin master
此后,會讓你填寫你的 git@osc
的用戶名和密碼。
使用git最重要的就是版本的恢復了。使用的命令主要有reset和revert。
使用之前使用需要了解一下git內部的實現過程。git主要分為三個部分,工作區,緩存區和本地倉庫,這使得git區別于一般的版本控制軟件。當前用戶的更改處于工作區內,而當用戶使用 git add 命令后則表示用戶將當前工作區的更改提交給了緩存區,此時,更改的文件并不是最終的版本,緩存區中的文件依然可以進行操作和增減。而當用戶使用 git commit命令時,才真正地將文件的更改提交了一個版本,進入了本地倉庫。以后有空的話可以畫個圖說明。
這就使得有三個空間可以讓我們在文件出錯的情況下,進行文件版本的恢復。
首先 本地倉庫--> 工作區和緩存區這是比較常用到的一個功能,情況:對當前的文件進行了編輯和存入了緩存區,但是由于誰把你代碼改了,或者不知道哪里出現了問題,編譯不通過了,可以使用這種方法直接將代碼的版本恢復到上一次,或者之前的提交的版本上,使用的命令是 git reset。命令運行的格式如下,其中主要參數有hard,soft,mix三種。下面分別分析。
git reset --參數 HEAD(or 提交版本的hash值)
對于git reset --hard這個命令將會直接改變你的工作區和緩存區,將里面的文件內容變成和之前的版本一樣的內容。正是所謂一刪到底,徹底地把文件恢復了。
對于git reset --soft這個命令將會將版本庫中的內容退回到你想到的版本狀態,將緩存區中從你想要的版本狀態后的所有文件改動標記為changes to be committed
,將工作區中比緩存區中多出的文件的改動變為untracked files
;
對于git reset --mix這個命令則是系統的默認參數,它的作用是將版本庫中的內容退回到你想要的版本狀態,將緩存區的內容也退回到你想要的版本狀態,將工作區中的內容從你想要的版本后的所有的文件更改標記為untracked files
;
看著有混亂,但是總的來說,git reset使得版本庫直接回到你想要的版本狀態,但hard將使得工作區和緩存區也同樣回去了,而soft使得緩存區沒有直接回去,而是將之后的狀態標記為未提交,并將工作區中未保存的狀態表示為未存儲,同理,mix命令則將緩存區也清空到了原版本狀態,而將之后的更改在工作區內表示為為存儲狀態。
這里,還得說下上面提到的HEAD,HEAD指針始終指向版本庫中的最新版本,所以HEAD則表示當前版本庫的最新版,HEAD^表示上一版本,HEAD^^表示上上一版本。如果你想回到一個具體的版本,你可以使用
git reflog
命令,來查看HEAD之前的更新,進而確定要恢復到的版本。
使用git revert就更有意思了,這個命令不是將原來的commit丟棄掉,而是接著你的commit繼續往上加,如果你revert到一個版本,那么git將會從當前狀態一直將你之前的更改反向地操作一遍,直到到你要回到的版本狀態,并提交產生一個新的版本,該版本在形式上是和原來的版本是一樣的,但是其實際上經過反向操作而形成的版本。
所以有人很奇怪,為什么有了reset還需要revert呢,這是因為使用的場合不同,reset只是將本地的版本進行更改,如果版本沒有上傳到遠端,可以隨意修改,但是revert則是繼續增加新的版本,這樣就算是文件上傳到了遠端,revert后進行push也還是沒有問題的。
其次 緩存區--> 工作區這里的意思是,文件修改后,add到緩存區了,還沒有提交,現在對于緩存區的文件不想要了,或者當前文件改變后不正常,想從緩存區中搞點文件下來,這里需要進行一些操作。
對緩存區的文件的操作有一些命令,刪除:
git rm --cached files
同時,如果想把文件從緩存區內拿出來,則可以使用命令:
git checkout files
最后 工作區清空做了半天,發現沒必要,同時git也沒有存入緩存區,于是,使用一個命令解決掉你痛苦的一天吧:
git clear -df
一切恢復平靜。
另外,還需要注意的git建立分支,使用ssh的操作等以后更新吧。
6、注意及其他5.1 需要更改你的分支名一般你的文件夾下你的分支名是master,而如果你要更改分支名的話。使用以下命令。
git branch /* 查看當前的分支 */git branch hello /* 創建一個名為hello的分支 */git checkout hello /* 將當前的分支改為hello分支 */
5.2 git 報錯(錯誤1) Updates were rejected because the tip of your current branch is behind its remote counterpart. Merge the remote changes (e.g. ""git pull"") before pushing again.解決方法: 首先在當前的project下,進行一次
git pull https://git.oschina.net/.../...git
然后再進行commit以及push操作。
(錯誤2) warning: LF will be replaced by CRLF解決方法: 這是由于Windows和linux的文件結束符不一致導致的。需要刪除.git,并重新配置。
rm -rf .git git config --gobal core.autocrlf false
接著就可以重新 init 了。
新聞熱點
疑難解答