git clone git@github.com:snowdreams1006/snowdreams1006.github.io.git
git init
git status
git diff
git add .
git add -p <file>
git commit -a
git commit
沒有更改已發佈的提交 | Don't amend publishd commits!git
git commit --amend
git log
git log -p <file>
git blame <file>
git branch -av
git checkout <branch>
git branch <new-branch>
git checkout --track <remote/branch>
git branch -d <branch>
git tag <tag-name>
git remote -v
git remote show <remote>
git remote add <shortname> <url>
git fetch <remote>
git pull <remote> <branch>
git push <remote> <branch>
git branch -dr <remote/branch>
git push --tags
git merge <branch>
不要變基已發佈的提交 | Don't rebase published commits!github
git rebase <branch>
git rebase --abort
git mergetool
git add <resolved-file> git rm <resolved-file>
git reset --hard HEAD
git checkout HEAD <file>
git revert <file>
git reset --hard <commit>
git reset <commit>
git reset --keep <commit>
提交應該是相關更改的包裝,例如,修復兩個不一樣的 bug 應該產生兩個單獨的提交.
小的提交讓其餘開發者更容易理解這次更改,而且萬一出錯方便回滾.
在暫存區這類工具以及暫存部分文件的能力下,git 很容易建立細粒度的提交.緩存
A commit should be a wrapper for related changes,
For example,fixing two different bugs should produce two separete commits.
Small commits make it easier for other developers to understand the changes and roll them back if something went wrong.
With tools like the staging area and the ability to stage only parts of a file.
Git makes it easy to create very granular commits.服務器
常常提交使得你的提交很小而且有助於僅提交相關更改.
此外,這樣容許你更頻繁地和其餘人分享你的代碼,對於每一個人來講更容器按期合併更改,避免了遭遇合並衝突.
,不多的大提交,不多分享它們.相反很難解決衝突.app
Commiting often keeps your commits small and again helps you commit only related changes.
Moreover,it allows you to share your code more frequently with others.
That way it's easier for everyone to integrate changes regularly and avoid having merge conflicts.Having few large commits and sharing them rarely.in contrast,makes it hard to solve conflicts.編輯器
你應該僅提交已完成代碼,這並不意外着提交前你不得不完成一個完整的,很大的功能分支.偏偏相反,將功能分支劃分紅不少邏輯塊而且記得早一點,頻繁些提交.
若是僅僅是爲了下班前倉庫該有點什麼就不要提交,若是你嘗試提交僅僅是由於你須要一個乾淨的工做副本(檢出分支,拉取更改),考慮使用 git
的 stash
特性.ide
You should only commit code when it's completed.
This doesn't mean you have to complete a whole ,large feature before commiting.
Quite the contrary:split the feature's implementatiion into logical chunks and remember to commit early and often.
But don't commit just to have something in the repository before leaving the ofice at the end of the day.
If you're tempted to commit just because you need a clean working copy (to check out a branch,pull in changes ,etc.) consider using Git's
抵制自覺得已完成的提交.
直接測試來確保它真的已完成而且沒有反作用(顯而易見的).
當提交半成品到本地倉庫時要求你不得不自我諒解,讓你的代碼進過測試對發佈或者分享你的代碼也很重要.學習
Resist the temptation to commit something that you think is completed.
Test it thoroughly to make sure it really is completed and has no side effect (as far as one can tell).
While committing half-baked thing in your local repository only requires you to forgive yourself,having your code tested is even more important when it comes to publishing/sharing your code with others.測試
對你的更改以簡短總結進行描述(達到50字符做爲準則).
以包括空白行做爲分割下述內容.
提交信息體應該提供下述問題的詳細答案:
使用必要的如今時語態(更改,不是已更改,或者變動)和使用形如 git merge
命令生成的信息保持一致.
Begin your message with short summary of your changes(up to 50 characters as a guideline).
Separate it from the following body by including a blank line.
The body of your message should provide detailed answers to the following questions:
Use the imperative ,present tense(change
,not changed
or changes
) to be consistent with generated messages from commands like git merge.
在遠程服務器存有文件的備份是版本控制系統的一個很好反作用.可是你不該該將VCS
視爲一個備份系統.
當作版本控制時,你應該注意語義化提交,而不是死記硬背文件.
Having your files backed up on a remote server is a nice side effect of having a version control system.
But you should not use your VCS
like it was a backup system.
When doing version control,you should pay attention to committing semantically(see related changes
) - you shouldn't just cram in files.
分支是 git
最強大的特性之一,這不是偶然.
從第一天開始快速而簡單的分支就是一個核心需求.
分支是幫助你避免弄混不一樣開發線的完美工具.
在你的開發流程中應該普遍使用分支,像新功能,修復 bug,新想法...
Branching is one of Git's most powerful features-and this is not by accident:quick and easy branching was a central requirement from day one.
Branches are the perfect tool to help you avoid mixing up different lines of development.
You should use branches extensively in your development workflows:for new features,bug fixes,ideas...
Git
容許你從大量不一樣的工做流中選擇一個:長期運行的分支,主題分支,合併或變,基工做流...
具體選擇哪個取決於一系列因素:你的項目,你的整體開發和部署工做流和(多是最重要的)你和你的團隊的我的偏好.
不論你選擇哪個去工做,你須要確保準守一個你們都認同的工做流.
Git lets you pick from a lot of different workflows:long-running branches,topic branches,merge or rebase,git-flow...
Which one you choose depends on a couple of factors:your project,your overall development and deployment workflows and (maybe most importantly ) on your and your teammate's personal preferences.
However you choose to work,just make sure to agree on a common workflow that everyone follows.
命令行下獲取 git
幫助
git help <command>
Git help on the command line
git help <command>
本文版權歸原做者全部,翻譯僅用於學習。