2. Git 基礎
- 2.1 取得一個 Git 倉儲
- 2.2 紀錄變更到版本庫中
- 2.3 檢視提交的歷史記錄
- 2.4 復原
- 2.5 與遠端協同工作
- 2.6 標籤
- 2.7 Git Aliases
- 2.8 總結
3. 使用 Git 分支
4. 伺服器上的 Git
- 4.1 通訊協定
- 4.2 在伺服器上佈署 Git
- 4.3 產生你的 SSH 公鑰
- 4.4 設定伺服器
- 4.5 Git 常駐程式
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第3方 Git 託管方案
- 4.10 總結
5. 分散式的 Git
- 6.1 建立帳戶及設定
- 6.2 參與一個專案
- 6.3 維護專案
- 6.4 Managing an organization
- 6.5 Scripting GitHub
- 6.6 總結
7. Git 工具
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 總結
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
10. Git Internals
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
A1. 附錄 A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in Powershell
- A1.7 Summary
A2. 附錄 B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
A3. 附錄 C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
A3.5 附錄 C: Git Commands - Sharing and Updating Projects
Sharing and Updating Projects
There are not very many commands in Git that access the network, nearly all of the commands operate on the local database. When you are ready to share your work or pull changes from elsewhere, there are a handful of commands that deal with remote repositories.
git fetch command communicates with a remote repository and fetches down all the information that is in that repository that is not in your current one and stores it in your local database.
We first look at this command in 從你的遠端獲取或拉取 and we continue to see examples of it use in 遠端分支.
We also use it in several of the examples in 對專案進行貢獻.
We use it to fetch a single specific reference that is outside of the default space in Pull Request 參照 and we see how to fetch from a bundle in Bundling.
We set up highly custom refspecs in order to make
git fetch do something a little different than the default in The Refspec.
git pull command is basically a combination of the
git fetch and
git merge commands, where Git will fetch from the remote you specify and then immediately try to merge it into the branch you’re on.
We introduce it quickly in 從你的遠端獲取或拉取 and show how to see what it will merge if you run it in 檢視遠端.
We also see how to use it to help with rebasing difficulties in Rebase When You Rebase.
We show how to use it with a URL to pull in changes in a one-off fashion in 切換到遠端分支.
Finally, we very quickly mention that you can use the
--verify-signatures option to it in order to verify that commits you are pulling have been GPG signed in Signing Commits.
git push command is used to communicate with another repository, calculate what your local database has that the remote one does not, and then pushes the difference into the other repository.
It requires write access to the other repository and so normally is authenticated somehow.
We first look at the
git push command in 推送到你的遠端.
Here we cover the basics of pushing a branch to a remote repository.
In Pushing we go a little deeper into pushing specific branches and in Tracking Branches we see how to set up tracking branches to automatically push to.
In 刪除遠端分支 we use the
--delete flag to delete a branch on the server with
Throughout 對專案進行貢獻 we see several examples of using
git push to share work on branches through multiple remotes.
We see how to use it to share tags that you have made with the
--tags option in 分享標籤.
In Publishing Submodule Changes we use the
--recurse-submodules option to check that all of our submodules work has been published before pushing the superproject, which can be really helpful when using submodules.
In Other Client Hooks we talk briefly about the
pre-push hook, which is a script we can setup to run before a push completes to verify that it should be allowed to push.
Finally, in Pushing Refspecs we look at pushing with a full refspec instead of the general shortcuts that are normally used. This can help you be very specific about what work you wish to share.
git remote command is a management tool for your record of remote repositories.
It allows you to save long URLs as short handles, such as “origin” so you don’t have to type them out all the time.
You can have several of these and the
git remote command is used to add, change and delete them.
This command is covered in detail in 與遠端協同工作, including listing, adding, removing and renaming them.
It is used in nearly every subsequent chapter in the book too, but always in the standard
git remote add <name> <url> format.
git archive command is used to create an archive file of a specific snapshot of the project.
git archive to create a tarball of a project for sharing in 準備釋出一個版本.
git submodule command is used to manage external repositories within a normal repositories.
This could be for libraries or other types of shared resources.
submodule command has several sub-commands (
sync, etc) for managing these resources.
This command is only mentioned and entirely covered in Submodules.