1. 建立版本庫 java
命令:git initgit
2. 提交文件 github
命令: git add <fileName> sql
git add . //增長全部文件ruby
git commit -m "提交備註信息" bash
git commit <fileName> -m"只提交file1" 提交指定文件ssh
3. 查看提交記錄日誌 url
命令:git logspa
git log --pretty=oneline 3d
$ git log --pretty=oneline aeeebd9b1c514fe6d922284aa9e20893c33d8502 (HEAD -> master) 新增第三行 7decb271aa65f74bbe3ff59ef9ec7be02cda2fe1 新增一行 d2a4bf09538d3991cc879f07864ceaa59cc78af7 add file1.txt
注:前面爲git版本號
$ git log --oneline 也能夠顯示日誌,只不過前面版本id不是全id
如 $ git log --oneline d2a4bf0 (HEAD -> master) add file1.txt
若是提交的歷史紀錄很長,回車會逐步顯示,輸入q
能夠退出。
4. 還原到上個版本
git reset --hard HEAD^ 後面^表明第幾個版本 ,^^表明還原到pre 2版本
git reset --hard HEAD~100 //還原到前100個版本
5. 回退到指定版本
git reset --hard commit_id(能夠不寫全) 如 git reset --hard d2a4bf
6.查看全部操做命令
git reflog
7. 撤銷修改 git checkout -- <fileName>
只是修改了工做區的readme.txt還未add,能夠直接git checkout -- readme.txt 文件會撤銷修改
已經add後使用git reset HEAD readme.txt 而後git checkout -- readme.txt 文件會撤銷修改
只要沒有提交 均可以使用git checkout -- <fileName>還原,已經commit的須要使用git resest --hard HEAD^版本回退
8. 文件刪除
刪除命令以下:
rm <fileName> 相似直接在文件夾中刪除
git rm <fileName>
git commit -m "message"
誤刪時只要沒有提交 均可以使用git checkout -- <fileName>還原,已經commit的須要使用git resest --hard HEAD^版本回退, git checkout
實際上是用版本庫裏的版本替換工做區的版本,不管工做區是修改仍是刪除,均可以「一鍵還原」。
1).批量刪除多個文件可使用上述方法提交,但過於繁瑣,首先須要清楚下面命令意思:
git add . :他會監控工做區的狀態樹,使用它會把工做時的全部變化提交到暫存區,包括文件內容修改(modified)以及新文件(new),但不包括被刪除的文件。
git add -u :他僅監控已經被add的文件(即tracked file),他會將被修改的文件提交到暫存區。add -u 不會提交新文件(untracked file)。(git add --update的縮寫)
git add -A :是上面兩個功能的合集(git add --all的縮寫)
故一次性刪除多個文件,可使用命令:
git add -A
git commit -m 'msg'
2).刪除文件夾:
git rm -rf <文件夾名>
git add -A
9.遠程倉庫
第1步:建立SSH Key 在用戶主目錄下,看看有沒有.ssh目錄,若是有,再看看這個目錄下有沒有id_rsa
和id_rsa.pub
這兩個文件,若是已經有了,可直接跳到下一步。若是沒有,打開Shell(Windows下打開Git Bash),建立SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
你須要把郵件地址換成你本身的郵件地址,而後一路回車,使用默認值便可,若是一切順利的話,能夠在用戶主目錄裏找到.ssh
目錄,裏面有id_rsa
和id_rsa.pub
兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa
是私鑰,不能泄露出去,id_rsa.pub
是公鑰,能夠放心地告訴任何人。
第2步:登陸github -->setting-->ssh keys 粘貼id_rsa.pub內容
注:GitHub須要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,因此,GitHub只要知道了你的公鑰,就能夠確認只有你本身才能推送
10.添加遠程庫
在github上新建repository,用來同步關聯本地repository,如在github建立learngit庫使用下面命令關聯本地庫
命令:$ git remote add origin git@github.com:你的git帳號/learngit.git
而後推送本地庫內容到遠程庫,命令:$ git push -u origin master 【把本地庫的內容推送到遠程,用
git push
命令,其實是把當前分支master
推送到遠程,因爲遠程庫是空的,咱們第一次推送master
分支時,加上了-u
參數,Git不但會把本地的master
分支內容推送的遠程新的master
分支,還會把本地的master
分支和遠程的master
分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。】
第一次推送後,每次本地庫提交後,均可以使用 $ git push origin master命令同步推送到遠程庫。
刪除與遠程庫的關聯 git remote rm origin
11.從遠程庫克隆
GitHub遠程庫詳情頁複製remote url(遠程庫鏈接)而後使用命令:$ git clone git@github.com:git帳號/庫名稱.git
$ git clone git@github.com:seanzhang1988/clonefromgithub.git
或
$ git clone https://github.com/seanzhang1988/CloneFromGitHub.git
12. 分支
git 默認一個分支master,能夠建立分支分支提交不影響master,分支提交完畢後能夠合併master並能夠刪除新建立的分支
建立分支:git branch dev
切換分支:git checkout dev
上述兩個能夠合併 git checkout -b dev
查看當前分支:git branch
合併分支:git merge dev (dev分支工做結束後master合併)
刪除分支:git branch -d dev
合併時保存分支信息 $ git merge --no-ff -m "merge with no-ff" dev
13.bug分支
出現bug後,能夠新建臨時分支處理bug,處理完畢後合併並刪除臨時分支。可是當你正在dev分支處理別的任務且還未完成,此時讓你來處理bug又該如何操做?git提供stash功能git stash,即暫時存儲dev分支,而後切換master分支建立bug分支,bug分支修改完畢提交後合併並刪除bug分支,再繼續dev分支的工做,此時使用命令:$ git stash pop
恢復dev正在進行的工做
,提交後合併會顯示bug分支修改的內容和dev分支內容。
14.多人協做
查看遠程庫信息 git remote 或者 git remote -v
推送本地分支到遠程 git push origin dev
場景:A建立dev分支修改後提交到遠程,若是B也想在dev上修改東西必須建立遠程origin
的dev
分支到本地,命令:git checkout -b dev origin/dev,有可能A的最新提交和B有衝突,B須使用git pull拉取最新的提交,而後在本地合併解決衝突後推送。拉取失敗緣由是沒有指定本地dev分支與遠程origin/dev分支的連接(specify which branch you want to merge with),命令:git branch --set-upstream-to=origin/dev dev,而後再git pull. 拉取成功後合併有衝突須手動解決,而後在提交push.
15.標籤管理
首先切換到須要打標籤的分支而後git tag <標籤名>,標籤都是打在commit上的,使用命令git log --pretty=oneline --abbrev-commit查找commit id,而後 git tag <標籤名> commit id打標籤,如:git tag v0.9 76afcc2,使用命令 git show <tagName> 查看標籤信息。命令git tag -a<tagName> -m "標籤描述",能夠給標籤添加解釋信息。
刪除標籤:git tag -d v0.1
推送標籤到遠程:git push origin <tagName> 或一次性推送所有標籤 git push origin --tags
刪除已推送遠程的標籤:git tag -d v0.1(先刪除本地),git push origin :refs/tag/v0.1(再刪遠程)。
16.使用GitHub
在GitHub上點擊fork就能夠在本身帳號下自動建立相應倉庫,這樣咱們能夠修改推送本身的倉庫,若是直接克隆別人的庫到本地,咱們沒有權限推送修改,可是能夠在github上發起pull request請求。
17.使用Gitee 碼雲
1.上傳本身的SSH公鑰,用戶主目錄 .ssh/id_rsa.pub 文件內容粘貼
2. gitee上新建項目hk001
3. 新建文件夾hk001右鍵git bash,使用命令git init新建本地倉庫,項目代碼粘貼到hk001
4. 本地庫代碼提交
5. 關聯遠程庫,git remote add origin git@gitee.com:gitee帳號/hk001.git
6. 推送遠程庫,git push -u origin master
注意:若是推送失敗須要先拉取遠程庫git pull,拉取若是報錯:fatal:refusing to merge unrelated histories可使用命令:git pull origin master --allow-unrelated-histories,而後再git pull再推送。
推送處理過程:
git支持關聯多個遠程庫,本地庫既能夠關聯github也能夠關聯gitee. 注意遠程庫名稱不是origin
step1.關聯github遠程庫:git remote add github git@github.com:帳號/hk001.git
step2.關聯gitee遠程庫: git remote add gitee git@gitee.com:帳號/hk001.git
step3. 推送遠程庫: git push github master
git push gitee master
18.忽略特殊文件
項目中有些文件不須要推送到遠程庫,能夠在git本地庫根目錄建立 .gitignore文件,而後把要忽略的文件名寫進去,git會自動忽略這些文件。https://github.com/github/gitignore 提供了各類配置文件,裏面有visualstudio.gitignore把該文件放入項目根目錄。 而後推送到GitHub.
命令:git add -f <fileName> 能夠強制添加被 .gitignore忽略的文件
19.實戰修改文件後推送遠程
1.查看狀態
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
2.查看當前分支
$ git branch
* master
3.建立工做分支
$ git checkout -b Feat_sean
Switched to a new branch 'Feat_sean'
4.修改文件後加入暫存區
$ git add README.md
5.提交文件
$ git commit -m "modified README.md"
[Feat_sean be12fa6] modified README.md
1 file changed, 1 insertion(+), 6 deletions(-)
6.推送到遠程
$ git push -u origin Feat_sean
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 301 bytes | 301.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by Gitee.com
To https://gitee.com/moce-technology/hk001
* [new branch] Feat_sean -> Feat_sean
Branch 'Feat_sean' set up to track remote branch 'Feat_sean' from 'origin'.
7.查看狀態
$ git status
On branch Feat_sean
Your branch is up to date with 'origin/Feat_sean'.
nothing to commit, working tree clean
8.切換主分支
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
9.合併分支
$ git merge Feat_sean
Updating df5a59b..be12fa6
Fast-forward
README.md | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
10.刪除工做分支
$ git branch -d Feat_sean Deleted branch Feat_sean (was be12fa6).