git 使用說明

一、工作步驟:

  1. 創(chuàng)建一個遠程的空代碼庫(在BitBucket上)
  2. 在本地代碼庫添加一個項目
  3. 在分支上開發(fā)新功能
  4. a) 保留新功能 或者b) 丟棄它們
  5. 也許,回到某個早先的時間點
  6. 將本地代碼庫推送到遠程代碼庫
  7. 在另一臺機器上取得遠程代碼庫

二、前期準備

2.1 創(chuàng)建一個遠程代碼庫

很多人喜歡用Github。我個人更喜歡BitBucket,因為它提供了不限制的私有代碼庫,那是我最需要的。你可以將下列指令轉換到Github上,這些過程是相同的。
那么,去到bitbucket并注冊一個賬號。一旦完成,登錄后點擊最上方的“create(創(chuàng)建)”按鈕。照著填寫表格,勾選私有代碼庫。

2.2 配置Git

在我們能用Git工作之前,我們需要做個一次性的配置。為了Git能跟蹤到誰做了修改,我們需要設置你的用戶名。我強烈建議你使用與注冊BitBucket賬號相同的用戶名和電子郵箱地址。發(fā)送這些命令,相應地替換掉其中的“your_username”your_email@domain.com(注意引號):
$ git config --global user.name lnj
$ git config --global user.email lnj321@gmail.com
我們都設好了。你無需在你的機器上再重復這些配置,但如果你在另一臺機器上工作的話,不要忘記這些配置。如果你忘記做初始的配置,Git不會允許你提交任何東西,這會讓你困擾。

2.3 創(chuàng)建一個本地代碼庫

作為例子,我們會假裝我們有一個網(wǎng)站(無所謂技術)存在于我們機器上的‘workspace’文件夾下的’my_site’文件夾內。在命令行中,去到你的站點的根文件夾。在OS XLinux上

cd ~/workspace/my_site/

在Windows上:

cd c:\workspace\my_site

我們首先需要告訴Git這個文件夾是我們需要跟蹤的項目。所以我們發(fā)送這個命令來初始化一個新的本地Git代碼庫
git init
Git會在my_site文件夾內創(chuàng)建一個名為.git的隱藏文件夾,那就是你的本地代碼庫。

三、git 操作步驟

3.1 加載(Stage)文件

我們現(xiàn)在需要命令Git我們需要加載(stage)所有項目文件。發(fā)送:

git add .

最后的“.”符號的意思是“所有文件、文件夾和子文件夾”。假如我們只想要把特定文件添加到源代碼控制中去,我們可以指定它們:

git add my_file, my_other_file

3.2 提交文件

現(xiàn)在,我們想要提交已加載(staged)的文件。閱讀“添加一個時間點,在這里你的文件處在一個可還原的狀態(tài)”。我們提交我們的文件時,總是附帶著有意義的注釋,描述了它們現(xiàn)在的狀態(tài)。我一直用“initial commit”來作為第一個提交的注釋。
git commit -m "initial commit"

就這樣?,F(xiàn)在你隨時都可以回滾到這個提交狀態(tài)。如果你有需要檢查你現(xiàn)在的已加載(staged)和未加載(unstaged)文件的狀態(tài)、提交等,你可以詢問git的狀態(tài):

git status

3.3 創(chuàng)建分支

建立分支是你創(chuàng)建代碼的獨立版本的動作,獨立于你的主干分支。默認地,每次你提交到Git的文件都會被儲存到“master(主干)”分支。
現(xiàn)在我們來說說,你想要向項目里添加一個功能,但你想要能夠回滾到現(xiàn)在版本,以防出現(xiàn)差錯,或者你決定要放棄這個功能。這就是你創(chuàng)建分支的時候了。創(chuàng)建并同時切換到你新建的分支,發(fā)送:

git checkout -b new_feature

或者,你可以先創(chuàng)建一個分支然后手動切換,就像這樣:

git branch new_feature
git checkout new_feature

要看你現(xiàn)在項目下所有的分支,發(fā)送這個:

git branch

現(xiàn)在你可以在你的項目上無所顧忌地做任何你想做的:任何時候,你都可以回到你創(chuàng)建分支前的狀態(tài)。注意,你同時可以有多個分支,甚至可以從一個分支上再創(chuàng)建一個分支。

3.4 合并分支

當你對你的新功能滿意了的時候,你想要把它加到主干分支上。當你在你的新功能分支上時,你首先需要加載(stage)并且提交你的文件:

git add .
git commit -m "adds my new feature"

然后你移到你的主干分支:

git checkout master

像這樣合并:

git merge new_feature

此時,你的主干分支和你的新功能分支會變成一樣的了。

3.5丟棄分支

相反,如果你打算丟棄你在分支里做的修改,你首先需要加載(stage)你的文件并且在分支里提交:

git add .
git commit -m "feature to be discarded"

然后,你移到主干分支:

git checkout master

現(xiàn)在,你的代碼處于你創(chuàng)建分支之前的狀態(tài)了。

3.6 刪除一個分支

如果你要把你的分支合并到主干分支,從主干(master)分支上發(fā)送:

git branch -d new_feature

假如修改已經合并了,它只會刪除分支。假如分支沒有合并,你會得到一個錯誤信息。刪除一個未合并的分支(通常你不想保留的修改),你需要發(fā)送一樣的命令附帶一個大寫D。意思是“強制刪除分支,無論如何我不想要它了。”:

git branch -D new_feature

3.7 回滾到之前的提交狀態(tài)

在某些時候,你可能想要回到之前的代碼版本。首先,你需要找到你想回到哪個版本。要看所有的完成了的提交,發(fā)送:

git log --graph

這會輸出你的提交的歷史記錄,像這樣:

* commit 230a1a564dd773d029f44606bf7c66b373f9558a
| Author: duofei <duofei3g@163.com>
| Date:   Fri May 20 16:22:54 2016 +0800
|
|     水情簡報,時間篩選
|
* commit bfad84ce1268eb1f7eb022149bf347ea81947587
| Author: duofei <duofei3g@163.com>
| Date:   Thu May 19 17:16:14 2016 +0800
|
|     水情簡報,最新簡報
|
* commit 77ea9237b0498d61a6089c5e1e308ddef240e24f
| Author: duofei <duofei3g@163.com>
| Date:   Thu May 19 13:48:23 2016 +0800
|
|     水情簡報,cell
|
* commit 54c19ee394334026b36c5c01dafa8cc46eeb344c
| Author: ritalina5969 <ritalina5969@gmail.com>
| Date:   Tue May 17 17:39:47 2016 +0800
|
|     CGRectMakeInViewWillAppear

如果你想回到“水情簡報,cell”這個提交,簡單地用提交的ID做簽出(checkout)(我通常只用到ID開頭的9個字符)

git checkout 77ea9237b
git reset --hard 77ea9237b

你也可以簽出到一個新的分支,像這樣:

git checkout -b my_previous_version 77ea9237b

只是別太瘋狂了!你的分支越復雜,就越難確定你真正在做什么。

3.8 推送到遠程代碼庫

在第一次你想推送一個本地代碼庫到遠程代碼庫時,你需要把它添加到你的項目配置里。像這樣做:

git remote add origin https://your_username@bitbucket.org/your_username/name_of_remote_repository.git

注意這里的“origin”只是一個習慣。它是你的遠程代碼庫的別名,但是你可以用其他任何你喜歡的詞。你甚至可以有多個遠程代碼庫,你只需要給它們起不同的別名。
之后,你想要推送你的本地代碼庫的主干分支到你的遠程代碼庫:

git push origin master//將代碼推送到遠程代碼庫
建議一般建議在 push之前先執(zhí)行:
git pull origin master //將遠程代碼庫的代碼同步至本地倉庫

如果你使用Bitbucket,在這時,你會被請求輸入你的密碼。照做,你的本地代碼庫會被推送到你的遠程代碼庫上。

3.9 取得遠程代碼庫的一份本地拷貝

如果你還沒有一份遠程代碼庫的本地版本(例如,如果你在另一臺機器上開始工作,這臺機器上還沒有用過這個項目),你首先需要拷貝(clone)它。去到你的代碼庫想要拷貝到的文件夾下,并發(fā)送:

git clone https://your_username@bitbucket.org/your_username/name_of_remote_repository.git

另一方面,如果你已經在本地的項目上工作了,只是想從遠程代碼庫上取得它最新的版本,移動到項目的根目錄下,并發(fā)送:

git pull origin master

3.10 別名

Git允許你為你常用的命令創(chuàng)建快捷方式(別名)。例如,如果你不想每次都輸入git commit -m “some comment”,而是輸入git c “some comment”,你可以向你的git全局配置里添加一個別名來實現(xiàn),像這樣:

git config --global alias.c 'commit -m'

這是我使用的別名列表:

git config --global alias.c 'commit -m'
git config --global alias.co 'checkout'
git config --global alias.cob 'checkout -b'
git config --global alias.br 'branch'
git config --global alias.m 'merge'
git config --global alias.a 'add .'
git config --global alias.s 'status'
git config --global alias.dbr 'branch -d'

四、git常用命令大全

4.1 遠程倉庫相關命令

檢出倉庫:$ git clone git://github.com/jquery/jquery.git
查看遠程倉庫:$ git remote -v
添加遠程倉庫:$ git remote add [name] [url]
刪除遠程倉庫:$ git remote rm [name]
修改遠程倉庫:$ git remote set-url --push [name] [newUrl]
拉取遠程倉庫:$ git pull [remoteName] [localBranchName]
推送遠程倉庫:$ git push [remoteName] [localBranchName]

4.2 分支(branch)操作相關命令

查看本地分支:$ git branch
查看遠程分支:$ git branch -r
創(chuàng)建本地分支:$ git branch [name] ----注意新分支創(chuàng)建后不會自動切        換為當前分支
切換分支:$ git checkout [name]
創(chuàng)建新分支并立即切換到新分支:$ git checkout -b [name]
刪除分支:$ git branch -d [name] ---- -d選項只能刪除已經參與了合并的分支,對于未有合并的分支是無法刪除的。如果想強制刪除一個分支,可以使用-D選項
合并分支:$ git merge [name] ----將名稱為[name]的分支與當前分支合并
創(chuàng)建遠程分支(本地分支push到遠程):$ git push origin [name]
刪除遠程分支:$ git push origin :heads/[name] 或 $ gitpush origin :[name]`

*創(chuàng)建空的分支:(執(zhí)行命令之前記得先提交你當前分支的修改,否則會被強制刪干凈沒得后悔)
$git symbolic-ref HEAD refs/heads/[name]
$rm .git/index
$git clean -fdx

4.3 常用命令(把常用的指令記住,其他不常用的用到時候在來查就好了)

git branch 查看本地所有分支
git status 查看當前狀態(tài) 
git commit 提交 
git branch -a 查看所有的分支
git branch -r 查看本地所有分支
git commit -am "init" 提交并且加注釋
git remote add origin git@192.168.1.119:ndshow
git push origin master 將文件給推到服務器上
git remote show origin 顯示遠程庫origin里的資源
git push origin master:develop
git push origin master:hb-dev 將本地庫與服務器上的庫進行關聯(lián)
git checkout --track origin/dev 切換到遠程dev分支
git branch -D master develop 刪除本地庫develop
git checkout -b dev 建立一個新的本地分支dev
git merge origin/dev 將分支dev與當前分支進行合并
git checkout dev 切換到本地dev分支
git remote show 查看遠程庫
git add .
git rm 文件名(包括路徑) 從git中刪除指定文件
git clone git://github.com/schacon/grit.git 從服務器上將代碼給拉下來
git config --list 看所有用戶
git ls-files 看已經被提交的
git rm [file name] 刪除一個文件
git commit -a 提交當前repos的所有的改變
git add [file name] 添加一個文件到git index
git commit -v 當你用-v參數(shù)的時候可以看commit的差異
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志(當前狀態(tài)為終點的日志)
git reflog (查看當前倉庫執(zhí)行過的所有日志)注意區(qū)別,都能查看哈希值、commit、
checkout、reset、merge等git命令。
git diff 查看尚未暫存的更新
git rm a.a 移除文件(從暫存區(qū)和工作區(qū)中刪除)
git rm --cached a.a 移除文件(只從暫存區(qū)中刪除)
git commit -m "remove" 移除文件(從Git中刪除)
git rm -f a.a 強行移除修改后文件(從暫存區(qū)和工作區(qū)中刪除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 將文件給push到一個臨時空間中
git stash pop 將文件從臨時空間pop下來
git remote add origin git@github.com:username/Hello-World.git
git push origin master 將本地項目給提交到服務器中
git pull 本地與服務器端同步
git push (遠程倉庫名) (分支名) 將本地分支推送到服務器上去。
git push origin serverfix:awesomebranch
git fetch 相當于是從遠程獲取最新版本到本地,不會自動merge
git commit -a -m "log_message" (-a是提交所有改動,-m是加入log信息)   本地修改同步至服務器端 :
git branch branch_0.1 master 從主分支master創(chuàng)建branch_0.1分支
git branch -m branch_0.1 branch_1.0 將branch_0.1重命名為branch_1.0
git checkout branch_1.0/master 切換到branch_1.0/master分支
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容