tips: 建遠(yuǎn)程庫(kù)時(shí)最好有 README .md, 別空空蕩蕩的
區(qū)別其他版本控制
git 分為工作區(qū), 版本庫(kù)的暫存區(qū)和版本庫(kù)的分支
git 操作的是文件的修改, 而不是文件. 我們?cè)诠ぷ鲄^(qū)修改過(guò)的文件 add 后進(jìn)入暫存區(qū), 再接著第二次修改后, 如果不 add, 直接 commit, 提交到分支里的是暫存區(qū)里的第一次修改
HTTPS 和 SSH
TODO
1. 建庫(kù)
cd [localUrl] 進(jìn)入本地目錄
git init 初始化git
git remote add origin [remoteUrl] 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù), origin 是遠(yuǎn)程庫(kù)的默認(rèn)代稱.
2. 拉取
git pull origin master 拉取master分支里的倉(cāng)庫(kù). master是默認(rèn)主分支名稱
或者
git clones [remoteUrl] 直接拉取全部倉(cāng)庫(kù)到本地
3. 提交
git add xxx
git commit -m "提交信息"
git push -u origin master 將本地的master分支推送到origin主機(jī), 同時(shí)指定origin為默認(rèn)主機(jī)
之后的提交不用-u, 直接 git push origin master就行
4. 后悔藥-版本
git log 查看詳細(xì)提交信息,版本號(hào)等
git log --pretty=oneline 查看精簡(jiǎn)提交信息, 只有版本號(hào)和提交描述
git reset --hard HEAD^ 回退上一個(gè)版本, HEAD^^回退上上個(gè)版本, HEAD~100往上100個(gè)版本
git reset xxxxxx 穿越到指定版本, 版本號(hào)還不必寫(xiě)全, git會(huì)自行查找, 但也不能太短
git reflog 再次打開(kāi)terminal時(shí)查看之前用過(guò)的命令
5. 查看工作區(qū)
git status 查看工作區(qū)哪些文件修改了, 修改的記得add.
6. 后悔藥-操作
git checkout -- file 撤銷修改.一定要加--, 不然checkout是在切換分支.
cheout的結(jié)果: 1.只是修改, 回到修改前. 2.add進(jìn)暫存區(qū)后又改了文件, 回到修改前也就是add后的
git reset file 撤銷add.
7. 刪除
git rm file
git commit -m "刪除描述"
8. 分支
git checkout -b dev 創(chuàng)建并選擇分支== git checkout dev + git branch dev.
git branch 查看所有分支
git branch dev 創(chuàng)建dev分支
git checkout dev 選擇dev分支
在dev分支操作一同后, 開(kāi)始合并
git merge dev dev合并進(jìn)master
git branch -d dev 刪掉dev, 強(qiáng)行刪除把 D 大寫(xiě)
git log --graph 查看分支合并圖
git merge --no-ff -m "保留分支信息的合并描述" dev 以后能看出這里做過(guò)合并
9. 臨時(shí)保存現(xiàn)場(chǎng)
git stash 保存現(xiàn)場(chǎng)
git stash pop 恢復(fù)現(xiàn)場(chǎng).并刪除stash
或
git stash apply 恢復(fù)現(xiàn)場(chǎng), 刪除需要自己 git stash drop
git stash list 查看stash列表
git stash apply stash@{0} 恢復(fù)指定stash
10. 給提交打 tag
git tag v1.0 打tag, 默認(rèn)給最新的commit
git tag vx 622222 給指定commit 打tag
git tag 查看tag
git tag -a v0.1 -m "version 0.1 released" 3628164 用 -a 指定 tag 創(chuàng)建說(shuō)明文字 -m
git tag -s v0.2 -m "signed version 0.2 released" fec145a 給tag上密鑰
git -d tag v0.1 刪除tag
11. tag 推送到遠(yuǎn)程
git push origin v1.0
git push origin --tags 推送全部 tag
如果已經(jīng)推送到遠(yuǎn)程, 刪除tag會(huì)麻煩一點(diǎn)
git tag -d v0.9 先刪除本地tag
git push origin :refs/tags/v0.9 在刪除遠(yuǎn)程tag
拉取單個(gè)文件夾參考
- 初始化新倉(cāng)庫(kù)
git init <repo>
cd <repo>
git remote add –f <name> <url> - 打開(kāi) sparse-checkout 特性
git config core.sparsecheckout true - 配置.git/info/sparse-checkout, 列出你想要的 checkout 目錄
echo some/dir/ >> .git/info/sparse-checkout
echo another/sub/tree >> .git/info/sparse-checkout - 拉取.(remote == name, branch 通常為 master)
git pull <remote> <branch>
報(bào)錯(cuò)
Everything up-to-date
- 沒(méi)有 git add.
- 沒(méi)有 git commit -m "提交信息"
Couldn't find remote ref master
- 倉(cāng)庫(kù)里什么都沒(méi), readme,.gitignore.....
參考