# Git tutorial   ## Tools * Git https://git-scm.com/ * SourceTree https://www.sourcetreeapp.com/ * TortoiseGit https://tortoisegit.org/ ## Web * Github * Bitbuket (Dell Ags) ## git vs svn (分散式、集中式) - 本端的工作目錄會有完整的儲存庫 - 可以在本端離線狀態下建立版本與歷史紀錄 * 支援非線性開發模式(分散式開發) * 提交(commit)版本速度非常快,也不用網路連線。 ## branch > 通常會從master建一個branch出來,例如AAA * create a branch * switch to branch ## git commit flow * Add in Staging -> commit(local)->push(remote) * 只有push才會真的傳到server上,commit只會到local端。 ### local commit之後 ``` 若是上一次commit的是verion A。 但是發覺上一次的verison A有漏東西要再補 可以使用Amend Last Commit ```  ### local端commit之後,如何回復? ```reset "master" to this```  ## Push * **不要**直接push到master * 通常是建另外的branch,再讓reviewer去合併你傳上去的code到master。 ## push branch to remote master 1. Create a pull request 2. Reviewer use merge or cherry-pick or rebase ## git submodule ``` 各個專案共用的部份會採用submodule的分式做區分。 想想若是共用的部份都用複製貼上的話,之後一定會有不同步的情況發生。 ``` ## Setup ssh connection `` genrate ssh key - tortoisegit - PuttyGen ``` tortoisegit的ssh key只吃ppk ``` - sourcetree - ssh-keygen --- ## git commands | 描述 | 命令 | | ------------ | ----------------------------------------- | | 切換分支 | git checkout XXX | | 建立分支 | Git branch XXX | | 建立切換 | Git checkout -b XXX | | 刪除分支 | Git branch -D XXX | | 查詢分支 | Git branch -a | | 比較分支 | Git diff XXX | | 合併commit | Git rebase -I HEAD~N | | Rebase onto | Git rebase --onto XXX | | Init Git SVN | Git svn init -s SVN_URL DIR | | Fetch svn | Git svn fetch | | Clone | Git svn clone -r rev_num:HEAD svn_url dir | | 密碼更換 | Command line下git svn fetch | ## reference * [猴子Git入門](https://backlog.com/git-tutorial/tw/) * [Git教學](https://kingofamani.gitbooks.io/git-teach/content/) * [Git learning](https://learngitbranching.js.org/?locale=zh_TW)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up