git 命令學(xué)習(xí) ?
1.創(chuàng)建一個本地版本庫
$mkdir gittutorcn(創(chuàng)建文件夾)
$cd gittutorcn(進(jìn)入目錄)
$git init(初始化git)
$git remote add origin 遠(yuǎn)程倉庫鏈接地址(將本地倉庫和遠(yuǎn)程倉庫關(guān)聯(lián))
2.克隆庫
$ git clone https://git.oschina.net/xxxxx/xxxx.git(git連接)
3.添加到版本庫
git add filename(文件名)
git add . ?(添加當(dāng)前目前所有文件到版本庫)
4.提交代碼? git commit
$git commit -m "這里是log日志"
$git commit -a -m "這里是log日志" ?#有文件修改的話,提交要帶 -a參數(shù)
5.查看日志
$ git log?
$ git show 顯示最近一次修改文件的詳細(xì)信息
$ git whatchanged 查看詳細(xì)日志記錄(包含每次修改的的文件記錄)
6.版本回退
(1)回退到某一版本并且放棄所有的修改
$ git reset --hard <commitId> (沒有填寫id,回退的當(dāng)前版本)
(2)回退到某一版本但保存自該版本起的修改
$ git reset commitId(提交的ID)
?(3)其他回退命令:
$ git reset --hard HEAD^? ? ? ? 回退到上個版本
$ git reset --hard HEAD~3? ? ? ? 回退到前3次提交之前,以此類推,回退到n次提交之前
$ git reset --hard commit_id? ? 退到/進(jìn)到 指定commit的記錄
強推到遠(yuǎn)程:
$ git push origin HEAD --force
或者
$?git push -f
7. 分支管理
(1)創(chuàng)建并轉(zhuǎn)移到新建分支上
$ git checkout -b tmpBranch [start_point]
其中 start_point 是一個可選參數(shù),指定新建分支 tmpBranch 是基于哪個節(jié)點,默認(rèn)為當(dāng)前所在分支的節(jié)點。
(2)刪除版本庫中的某個分支
使用 git branch -d 命令就可以了,例如:
$ git branch -d tmpBranch(分支名稱)?(刪除的分支還沒有被 merge 到其他分支,會刪除失敗)
使用?git branch -D?這個命令不會去判斷分支的merge狀態(tài),例如:
$ git branch -D tmpBranch(分支名稱) (強制刪除)
通常建議使用 -d 參數(shù)來刪除分支,以防無意的信息丟失。
(3)切換分支
$ git checkout tmpBranch(分支名稱)
(4)查看分支差異
$ git diff master^ tmpBranch( master^ 和 tmpBranch 的版本的差異情況)
(5)分支合并 合并兩個分支:git merge
將 tmpBranch 分支上的工作合并到 master 分支中。現(xiàn)在轉(zhuǎn)移我們當(dāng)前的工作分支到 master,并且將 tmpBranch 分支上的工作合并進(jìn)來。
$ git checkout master
$ git merge -m "Merge from tmpBranch" tmpBranch
(6)撤銷合并
逆轉(zhuǎn)與恢復(fù):git reset
git reset --hard commit_id(撤銷到某個提交版本)
(7)新建遠(yuǎn)程分支
1.先新建本地分支 git checkout -b newBranch(分支名稱)
2.推送本地分支到遠(yuǎn)程服務(wù)器
$ git push origin newBranch(本地分支名稱 此處不能留空格):newBranch(遠(yuǎn)程分支名稱)
(8)刪除遠(yuǎn)程分支??
推送一個空分支到遠(yuǎn)程分支,其實就相當(dāng)于刪除遠(yuǎn)程分支
$ git push origin(空格表示空分支):newBranch(遠(yuǎn)程分支名稱)
$ git push origin --delete ?<BranchName>
(9)檢出遠(yuǎn)程分支
$ git checkout -b function1(本地分支名稱) origin/function1(遠(yuǎn)程分支名稱)
(9)查看分支
$ git branch -a ?查看所有分支(包含遠(yuǎn)程分支)
$ git branch -r 查看遠(yuǎn)程分支
$ git branch -查看b分支
8.標(biāo)簽管理
(1)設(shè)置標(biāo)簽
$ git tag -a v1.2.4 -m "tag日志" ?<commitId>
(2)刪除標(biāo)簽
$ git tag -d v1.2.4
(3)查看標(biāo)簽信息
$ git show v0.1.2 #tagname
(4)提交tag到遠(yuǎn)程服務(wù)器
$ git push ?origin?v0.1.2 # 將v0.1.2標(biāo)簽提交到git服務(wù)器
$ git push --tags # 將本地所有標(biāo)簽一次性提交到git服務(wù)器
(5)刪除遠(yuǎn)程tag
$ git push origin --delete tag <tagname>
9.文件改動記錄管理
git diff
可以查看本地的改動,即git status看到的文件的具體改動
git diff commit-id1 commit-id2 --stat
這個指令可以看兩個版本之間有哪些文件改動
git diff branch1 branch2 --stat
這個指令可以看兩個分支之間有哪些文件差異
git diff tag1 tag2 --stat
這個指令可以看兩個tag之間有哪些文件差異或者改動
git log? file
可以看到一個文件的改動,以commit的形式展現(xiàn)
git log -p file
可以看到具體一個文件的歷史改動記錄
10.生成指定commit的補丁
git format常用命令
git format-patch -3?//從當(dāng)前分支最新提交點往下共生成3個補丁
git format-patch -1 指定commit號?//生成指定commit號的補丁
會根據(jù)命令的數(shù)字,生成相應(yīng)數(shù)量的補丁文件在當(dāng)前項目目錄下面
其他常用命令
ctrl+Z 表示退出 顯示
reset 清屏
cat 1.txt(文件名)查看文件 cat命令
echo adada>1.txt 創(chuàng)建并寫入文件
git diff 查看版本的差異信息
git status 查看狀態(tài)
問題答疑:
1.git fetch和git pull的區(qū)別:
1.git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會自動merge
2.git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地
上述命令其實相當(dāng)于git fetch 和 git merge
在實際使用中,git fetch更安全一些
因為在merge前,我們可以查看更新情況,然后再決定是否合并
1.git reset和git revert的區(qū)別:
1.git reset:版本回退,版本日志回滾,清除提交日志,帶--hard參數(shù)的話,放棄所有修改,反之,保留自版本起所有修改
2.git revert:撤銷某次提交,版本日志不回滾。