理论篇 GIT使用笔记
?
GIT學習指導的游戲:http://pcottle.github.io/learnGitBranching/?NODEMO
?
git fetch: 下載遠端所有分支的本地沒有的提交列表,并更新local分支origin/master
1. 從remote下載local resp未包含的提交對象;
2.?更新local resp的遠端分支點(如:?origin/master)
git fetch origin remoteBranch:localBranch // 下載遠端的分支到本地分支
git fetch orign :localNewBranch // 不指定Source時創建本地新分支?
?
合并local resp的兩個分支,有以下方式:
1.?git cherry-pick o/master
2.?git rebase o/master
3.?git merge o/master
?
git pull: 就是git fetch與git merge origin/master的組合;
1. 下載并更新local origin/master;
2. 將local分支origin/master合并到local的當前分支中;
注:如果要替換pull默認的merge操作,可以使用:git pull --rebase(當然rebase是從當前分支到origin/master分支中,因為remote提交的可能會很多;如果本地很多,remote少,可以反過來)
?
git push: 提交local的當前分支 到remote的該分支中,并更新local的origin/master分支;
1.?提交local的當前分支 到remote的該分支中
2.?更新local的origin/master分支
?
A先checkout remote的mater分支到local的master分支,開發new feature;B此后多次提交到remote的master分支;A要提交之前,必先下載合并代碼,確保代碼工作無誤后,才提交:
1. git fetch 更新local的origin/master分支;
2. git rebase origin/master 以origin/maste為主分支,衍合當前分支master,此時master比origin/master多前進了feature提交;測試功能或者再提交;
3. git push 提交到remote,并更新local的origin/master分支;
注:如果將步驟2的rebase替換為merge,那么在步驟3的push中,remote也會做merge操作;
?
? 關于讓某個分支HEAD快速前進:
master分支的head在C1,feature1分支的head在C2,C1 --> C2,想要將master的head移到C2上,可以:git rebase feature1 master(以feature1分支為主干,衍合其它分支)
?
git rebase feature1: 都是以feature1分支為主分支,衍合當前分支master;
git rebase feature1?master :都是以feature1分支為主分支,衍合master分支;
1. 按提交順序:如果master在feature1的上面,則將master的HEAD前移,即:快速前進;
2. 按提交順序:如果master與feature1并列,則復制master的更新,HEAD指向最新提交;
3.?按提交順序:如果master在feature1的下面,則提示:分支已經是最新的!
?
跟蹤遠端分支:
git checkout -b newBranchName o/master
git branch -u o/master existedBranchName // 重新設置upstream. (-u)
?
將本地master分支的提交列表,推送到origin倉庫的master分支中;
git push origin master
將本地分支或者HEAD指向的提交,推送到origin倉庫的已存在分支或者新分支中;
git push origin localBranch^:remoteNewBranch
不指定source時,刪除分支localBranch
git push origin :localBranch
?
remoteBranch下載到localBranch中,再在當前正在工作的branch中,merge localBranch。
git pull origin remoteBranch:localBranch
?
<<Pro Git>>學習筆記:
本地工作目錄的三種狀態:
已提交 commited --> 已修改 modified --> 已暫存?staged
命令:
git config
// 添加別名
git config --global alias.<short> <full-name>
git clone // 從遠程倉庫下載到本地目錄
?
git status //?工作目錄中各文件的狀態:“已修改”、“已暫存”
狀態變更:
git add <file> ?//?放到暫存區,處于“已暫存”
git commit -m "commitMessage" // 提交文件,狀態為:"已提交"
git commit -a -m // 跳過暫存,直接提交
?
git rm <file> // 從暫存區移除文件
git rm <file> -f // 永久移除該文件,待提交
git rm <file> --cache // 保存該文件,不提交
git reset head <file> // 取消"已暫存",恢復到工作目錄
git commit --amend -m msg // 修改最后一次提交:將"暫存區"覆蓋上次的提交,彌補上次的部分缺失
git checkout <file> // 取消"已修改",恢復到上次最新的代碼
遠程倉庫:
git remote -v // 查看遠程倉庫
git remote add <name> <url> // 添加遠程倉庫
git remote show <remote-repository-name> //?查看某個遠程倉庫的詳細信息
git remote rename <old-name> <new-name> // 更改遠程倉庫的名字
git fetch <remote-name>? //?從遠程倉庫抓取數據到本地
// 本地推送到遠程倉庫的某個分支上
git push <remote-repository-name> <remote-branch-name>
// 將所有本地標簽上傳過去
git push <> <> --tags
分支管理:
git branch -a // 查看本地所有分支
git branch <branch-name> ?// 創建分支
git branch -d <branch> // 刪除分支(-D 強制刪除)
?
git checkout <branch> // 切換分支(切換工作目錄到某一個分支)
git checkout -b <branch> // 創建分支,并切換到該分支
git checkout -b <branch> <remote-resp>/<remote-branch>
?
git merge <branch> // 將branch合并到當前分支中;
git push <remote-resp> <branch> // 將分支推送到遠程倉庫的該分支下
git push <remote-resp> <branch>:<remote-branch> // 將分支推送到遠程倉庫的某branch下
git push <remote-resp> :<remote-branch> // 刪除遠程倉庫下的branch
?
git rebase <branch> // 將當前分支,衍合到branch中
?
轉載于:https://www.cnblogs.com/diydyq/p/4103007.html
總結
以上是生活随笔為你收集整理的理论篇 GIT使用笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS6新特征:UICollection
- 下一篇: Centos环境下删除Oracle11g