git中clone項目有兩種方式:https和ssh
https:無論是誰,拿到url隨便clone,可是在push的時候須要驗證用戶名和密碼
ssh:clone項目你必須是擁有者或者管理員,並且須要在clone前添加SSH Key。SSH在push的時候,是不須要輸入用戶名的,若是配置SSH Key的時候設置了密碼,則須要輸入密碼,不然是不須要輸入密碼的
1.檢查電腦是否存在SSH Keygit
cd ~/.ssh ls 若是存在id_rsa.pub或id_ dsa.pub文件,說明文件已經存在,跳過建立SSH Key步驟
2.建立SSH Keygithub
ssh -keygen -t rasa -C 「your_email@example.com」
3.查看SSH Key服務器
cat ~/.ssh/id_rsa.pub
4.將查看的SSH Key賦值到git中設置好app
5.測試SSH Keyssh
ssh -T git@git.oschina.net 出現Welcome to xxx就能夠了
github/gitlab同時管理多個ssh keygitlab
思考:測試
工做區 work
暫存區 index/stagefetch
git checkout file 此命令會使用HEAD中的最新內容替換掉你的工做目錄中的文件,已添加到暫存區的改動以及新文件都不會受到影響。 git fetch origin & git reset —hard origin/master 丟去你在本地的全部改動與提交,能夠到服務器上獲取最新的版本歷史,並將你本地主分支指向它
step1: 新建本地倉庫ui
mkdir learn-git cd learn-git git init
step2: 推送到遠程倉庫url
在github上新建一個空的倉庫,默認設置
github告訴咱們能夠從這個倉庫克隆出新的倉庫,也能夠把已有的本地倉庫與之關聯,而後把本地倉庫的內容推送到github倉庫上
git remote add origin https://github.com/Liuhui11/learn-git.git 本地倉庫關聯遠程倉庫 git remote remove origin 取消關聯
git push -u origin master 將本地倉庫推送到遠程倉庫
報錯: src refspec master does not match any
緣由:空倉庫不能提交上去
解決:
touch README git commit -m ‘first commit’ git push -u origin master
分支管理策略:
master分支:穩定、僅用來發布新版本,平時不能在上面幹活
dev分支:不穩定、幹活的地方,發佈新版本時合併到master上
我的開發的分支:每一個人都有本身的分支,最終要往dev上合併
合併分支時,加上—no-ff參數可以使用普通模式合併,合併後的歷史有分支,能看出來曾經作過合併;而fast forward合併就看不出來曾經作過合併bug分支:
git stash 將當前工做現場儲存起來,等之後恢復現場後繼續工做
git stash apply 恢復以前的工做現場
git stash list
git stash drop 刪除stash內容
git stash apply stash@{0} 恢復到指定的stashfeature分支:
爲新功能建立分支
git branch -D feature-vulcan 強行刪除分支多人協做:
git remote -v 查看遠程庫的信息
master分支是主分支,所以時刻與遠程同步
dev分支是開發分支,團隊全部成員都須要在上面工做,因此也須要與遠程同步
bug分支只用於在本地修復bug,就不必推到遠程了
feature分支是否推到遠程,取決於你是否和你的小夥伴在上面開發
git branch dev 新建 git branch -d dev 刪除 git merge dev 合併 git branch -a 查看 git checkout dev 切換
git tag v1.0 建立標籤,默認標籤是打在最新提交的commit上的 git tag 查看標籤 git tag -a <tagname> -m "blablabla..." 指定標籤信息 git tag -s <tagname> -m "blablabla..." 用PGP簽名標籤 找到歷史提交的commit id打標籤: 1.git log --pretty=oneline --abbrev-commit 2.git tag v1.0 commit-id git tag -d v1.0 刪除標籤 git push origin <tagname> 推送指定標籤 git push origin --tags 一次性推送所有還沒有推送到遠程的本地標籤 git tag -d v0.9 & git push origin :refs/tags/v0.9 刪除遠程標籤
git log/git log --pretty=oneline 查看commit的歷史記錄 git reset —hard HEAD^ 回退到上一個版本,或者經過commit id來回退到指定版本 git reflog 記錄你的每一次命令,包括將來的版本 找到以前版本的commit id能夠返回到最新的版本
git add -f file 強制添加文件,即便被忽略了 git check-ignore -v file 查看文件不能被提交是哪一個規則寫的 https://github.com/github/gitignore 在線自動生成忽略文件 忽略已經被追蹤的文件 git rm --cached file 更新.gitignore忽略掉目標文件 git add . git commit -m 或者:git update-index --assume-unchanged logs/*.log