-
git 安裝
windows 是鄙視鏈末端的開發平臺,但也得用啊! 下載地址:https://git-for-windows.github.io/
-
git 配置
$ git config --global user.name "runoob" $ git config --global user.email test@runoob.com $ git config --list SSH 密鑰 $ ssh-keygen -t rsa -C "your_email@youremail.com" $ ssh -T git@github.com
git 工作流程
git-process.png
- git 文件區“三棵樹”
git-zone.jpg
+ git add : 暫存區的目錄樹被更新,同時工作區文件內容被寫入到對象庫中的一個新的對象中,而該對象的ID被記錄在暫存區的文件索引中。
+ git commit : 暫存區的目錄樹寫到版本庫(對象庫)中,master 分支會做相應的更新。即 master 指向的目錄樹就是提交時暫存區的目錄樹。
+ git reset HEAD : 暫存區的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區不受影響。
+ git rm --cached <file> : 會直接從暫存區刪除文件,工作區則不做出改變。
+ git checkout 或者 git checkout -- <file> : 暫存區全部或指定的文件替換工作區的文件。這個操作很危險,會清除工作區中未添加到暫存區的改動。
+ git checkout HEAD 或者 git checkout HEAD <file> : HEAD 指向的 master 分支中的全部或者部分文件替換暫存區和以及工作區中的文件。這個命令也是極具危險性的,因為不但會清除工作區中未提交的改動,也會清除暫存區中未提交的改動。
-
git 倉庫
+ git init : 初始化當前目錄,即將本地項目加入git。進錯目錄的話,直接刪除.git 文件夾。然后將相關文件加入版本控制: $ git add *.c $ git add README $ git commit -m '初始化項目版本' ———————————————————————————————————————————— + git clone :克隆服務器項目加入git。可指定地址,可改名 $ git clone <repo> $ git clone git://github.com/schacon/grit.git mygrit ———————————————————————————————————————————— + 忽略無需加入git管理的文件,如自動生成的日志文件、編譯過程中的臨時文件等。養成習慣,避免提交無用的文件 參考內容參考 : https://github.com/github/gitignore
-
git 基本命令
+ git add : 這是個多功能命令:可以用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區,還能用于合并時把有沖突的文件標記為已解決狀態等。 將這個命令理解為“添加內容到下一次提交中”而不是“將一個文件添加到項目中”要更加合適。 —————————————————————————————————————————— + git status -s : 查看項目當前狀態。帶-s是簡要輸出,不帶-s是詳細輸出。 ?? ——新添加的未跟蹤文件; A ——新添加到暫存區中的文件; M ——修改過的文件。出現在左邊的 M,表示該文件被修改了并放入了暫存區; M ——修改過的文件。出現在右邊的 M,表示該文件被修改了但是還沒放入暫存區。 —————————————————————————————————————————— + git diff :查看變動內容。 尚未緩存的改動:git diff 查看已緩存的改動: git diff --cached 查看已緩存的與未緩存的所有改動:git diff HEAD 顯示摘要而非整個 diff:git diff --stat 備注:查看代碼差異的圖形化工具,例:diffmerge —————————————————————————————————————————— + git commit -m '注釋內容' : 將緩存區內容加到倉庫. + git commit -m -a '注釋內容' : 跳過git add加緩存環節,直接提交跟蹤過的文件。 —————————————————————————————————————————— + git reset HEAD -- 文件:用于取消已緩存的內容,取消之前 git add 添加,但不希望包含在下一提交快照中的緩存 —————————————————————————————————————————— + git rm file :將條目從緩存區及硬盤中移除,比git reset HEAD 程度重 + git rm --cached file : 將條目從緩存區移除,但保留硬盤文件。相當于從未add過,適于忘記添加 .gitignore 文件時用 —————————————————————————————————————————— + git mv file_old file_new : 重命名文件。一條命令做三件事:從緩存區移除,重命名,再加入緩存區 —————————————————————————————————————————— + git log : 查看提交歷史記錄。可帶不同參數: --oneline : 單行簡潔表示 --graph : 分支、合并等等 --before={3.weeks.ago} :指定時間方式1 --after={2010-04-18} :指定時間方式2 -(n) :僅顯示最近的 n 條提交 更多詳見:https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2 ———————————————————————————————————————————— + git tag -a v1.4 -m '注釋' : 加附注標簽,帶注釋。不帶-a-m,則為輕量標簽 + git show v1.4 : 查看標簽 ————————————————————————————————————————————
-
遠程倉庫 github
+ git remote : 查看已經配置的遠程倉庫服務器。倉庫服務器的默認名字為origin。加上 -v 參數,可以看到每個別名的實際鏈接地址 + git remote add [shortname] [url] : 添加一個新的遠程 Git 倉庫,同時指定一個簡寫 —————————————————————————————————————————— + git fetch : 從遠程倉庫下載新分支與數據,只要在于查看。之后需git merge該分支到你所在分支 + git pull : 即git fetch 再加git merge,包含合并過程 —————————————————————————————————————————— + git push [remote-name] [branch-name] : 推送新分支與數據到某個遠端倉庫 —————————————————————————————————————————— + git remote rm [別名] : 刪除某個遠程倉庫 + git remote rename oldname newname :重命名遠程倉庫