目錄
4、查看提交歷史
4.1 查看日志詳細(xì)信息
4.2 查看某次提交信息
4.3 查看更改
5、撤銷操作
5.1 取消暫存的文件
5.2 撤銷對(duì)文件的修改
5.3 撤銷遠(yuǎn)程記錄
6 遠(yuǎn)程倉庫的使用
6.1 查看遠(yuǎn)程倉庫
6.2 添加遠(yuǎn)程倉庫
6.3 從遠(yuǎn)程倉庫中抓取與拉取
6.4 同步遠(yuǎn)程倉庫
6.4.1 遠(yuǎn)程推送
6.4.2 同步遠(yuǎn)程
6.5 查看遠(yuǎn)程倉庫
6.6 遠(yuǎn)程倉庫的移除與重命名
6.6.1 代碼退回
4、查看提交歷史
4.1 查看日志詳細(xì)信息
????在提交了若干更新,又或者克隆了某個(gè)項(xiàng)目之后,通過?git log
?命令回顧提交歷史。
# 按提交時(shí)間列出所有的更新,最近的更新安排在最上面
$ git log
# 會(huì)列出每個(gè)提交的:
# SHA-1 校驗(yàn)和、提交作者和電子郵件地址、提交時(shí)間以及提交說明
# 簡(jiǎn)易查看
????常用的有:
-
-p
用來顯示每次提交的內(nèi)容的差異; -
-2
僅顯示最近兩次的提交(除了顯示基本信息之外,還附帶了每次?commit
?的變化); -
--stat
查看每次提交的簡(jiǎn)略的統(tǒng)計(jì)信息: 列出所有被修改過的文件、有多少修改文件以及修改文件的那些行被移除或者添加、總結(jié)。
-
--pretty
指定使用不同于默認(rèn)格式的方式展示提交歷史: 內(nèi)建的子選項(xiàng):如oneline
:將每個(gè)提交放一行顯示;還有?short
,full
?和?fuller
。
-
format
定制顯示的記錄格式:
# --pretty=format 列出了常用的格式占位符寫法及其代表的意義
$ git log --pretty=format:"%h - %an, %ar : %s"
-
--graph
添加了一些ASCII字符串來形象地展示你的分支、合并歷史:
4.2 查看某次提交信息
????使用git show
命令查看某一次提交詳細(xì)信息。?git show
命令采用SHA-1提交ID作為參數(shù):
$ git show fb10c87d1c2164442a3280133609a31e12e47889
-
+ / -
: 表示添加 / 刪除;
4.3 查看更改
????通過運(yùn)行 git diff
命令來回顧文件的更改:
$ git diff
5、撤銷操作
在任何一個(gè)階段,都很有可能想要撤銷某些操作,通過以下基本命令進(jìn)行實(shí)現(xiàn)(有些撤銷操作是不可逆的):
$ git commit --amend
????該命令會(huì)將暫存區(qū)的文件提交,如果自上次提交依賴未進(jìn)行任何修改,那么快照會(huì)保持不變,而此時(shí)修改的只是提交信息。
????當(dāng)提交后忘記暫存某些需要的修改,可以這樣操作:
$ git commit -m 'initial commit'
$ git add forgtten_file
$ git commit --amend
????最終只會(huì)有一個(gè)提交,第二次提交將代替第一次提交的結(jié)果。
5.1 取消暫存的文件
????當(dāng)我們修改了兩個(gè)文件并且想要將它們作為兩次獨(dú)立的修改提交,但是卻意外地操作了 git add *
暫存了它們兩個(gè),這個(gè)時(shí)候怎么進(jìn)行取消暫存呢,通過 git status 命令提示進(jìn)行:
????在 “Changes to be committed” 文字正下方,提示使用?git restore --staged <file>...
?來取消暫存。 所以,我們可以這樣來取消暫存?noadd.txt?文件:
$ git restore --staged <file name>
5.2 撤銷對(duì)文件的修改
????當(dāng)不想保留修改了的文件的時(shí)候,通過 git checkout -- filename
對(duì)修改進(jìn)行恢復(fù)還原(或者 clone 完時(shí)、剛放入工作目錄時(shí))(恢復(fù)到最近的一次 add 或 commit):
$ git checkout -- filename
可以清楚的看到,在第一次將文件 noadd.txt 進(jìn)行提交后進(jìn)入文件跟蹤才可以進(jìn)行修改撤銷操作,當(dāng)對(duì)跟蹤的文件進(jìn)行內(nèi)容修改之后,進(jìn)行提交 git add
或 git commit
后,通過 git checkout -- noadd.txt
將修改后的文件進(jìn)行撤銷恢復(fù)到最近的一次提交操作當(dāng)中。
在 Git 中任何已提交的東西幾乎總是可以恢復(fù)的。
甚至那些被刪除的分支中的提交或使用?
--amend
?選項(xiàng)覆蓋的提交也可以恢復(fù)。然而,任何你未提交的東西丟失后很可能再也找不到了。
5.3 撤銷遠(yuǎn)程記錄
????通過 git log
命令對(duì)所有提交的記錄進(jìn)行查看,選出指定的 commit ID,利用 git rebase -i
及其隨后的 ID 進(jìn)行對(duì)提交記錄的指定刪除撤銷:
$ git rebase -i e10938c
????觸發(fā)以上命令將會(huì)進(jìn)入指定提交記錄的文件內(nèi)容,將 pick
更改為 drop
即可對(duì)指定的提交記錄刪除撤銷,通過 wq
進(jìn)行保存:
6 遠(yuǎn)程倉庫的使用
6.1 查看遠(yuǎn)程倉庫
????查看已經(jīng)配置的遠(yuǎn)程倉庫服務(wù)器,可以運(yùn)行 git remote
命令,它會(huì)列出指定的每一個(gè)遠(yuǎn)程服務(wù)器的簡(jiǎn)寫,也可以指定選項(xiàng)?-v
,會(huì)顯示需要讀寫遠(yuǎn)程倉庫使用的 Git 保存的簡(jiǎn)寫與其對(duì)應(yīng)的 URL。Git 指定的默認(rèn)倉庫服務(wù)器的名字:origin
。
$ git remote -v
origin https://github.com/2**2/git-demo0823.git
6.2 添加遠(yuǎn)程倉庫
運(yùn)行?git remote add <shortname> <url>
?添加一個(gè)新的遠(yuǎn)程 Git 倉庫,同時(shí)指定一個(gè)可以輕松引用的簡(jiǎn)寫:
$ git remote add sn https://github.com/**/git-demo1024.git
????現(xiàn)在可以在命令行中使用字符串 sn
來代替整個(gè) URL,例如,想拉取倉庫中有但目前沒有的信息,可以運(yùn)行 git fetch sn
:
$ git fetch sn
????現(xiàn)在 test
分支可以在本地通過 sn/test
訪問到。
6.3 從遠(yuǎn)程倉庫中抓取與拉取
????從遠(yuǎn)程倉庫中獲得數(shù)據(jù),可以執(zhí)行:
$ git fetch [remote-name]
????這個(gè)命令會(huì)訪問遠(yuǎn)程倉庫,從中拉取所有還沒有的數(shù)據(jù)。執(zhí)行完成后,將會(huì)擁有那個(gè)遠(yuǎn)程倉庫中所有分支的引用,可以隨時(shí)合并或查看。
????clone
倉庫會(huì)自動(dòng)給其添加為遠(yuǎn)程倉庫并默認(rèn)以 origin
為簡(jiǎn)寫。所以,git fetch origin
會(huì)抓取克?。ɑ蛏弦淮巫ト。┖笮峦扑偷乃泄ぷ?。
git fetch
?命令會(huì)將數(shù)據(jù)拉取到本地倉庫 - 它并不會(huì)自動(dòng)合并或修改當(dāng)前的工作。
運(yùn)行?git pull
?通常會(huì)從最初克隆的服務(wù)器上抓取數(shù)據(jù)并自動(dòng)嘗試合并到當(dāng)前所在的分支。
6.4 同步遠(yuǎn)程倉庫
git push [remote-name] [branch-name]
。 當(dāng)你想要將?master
?分支推送到?origin
?服務(wù)器時(shí)(默認(rèn)),那么運(yùn)行這個(gè)命令就可以將所做的備份到服務(wù)器:
$ git push origin master
# 推送到遠(yuǎn)程服務(wù)器
$ git push origin master --force
1、只有當(dāng)你有所克隆的服務(wù)器的寫入權(quán)限,并且之前沒有人推送過,這條命令才能生效。
2、當(dāng)你和其他人在同一時(shí)間克隆,而別人先推送到上游之后你再推送,此時(shí)你的推送就會(huì)被拒絕,你必須先將他們的工作拉取下來并合并到你的工作之后才能推送。
6.4.1 遠(yuǎn)程推送
# add commit remote push
# 本地倉庫暫存,把當(dāng)前目錄下所有的文件及子目錄都添加進(jìn)行管理
# $ git add [filename]
$ git add .
# 將本地倉庫暫存區(qū)的文件提交到本地倉庫
$ git commit -m 'C++編寫規(guī)范.md'
# 將本地倉庫和遠(yuǎn)程倉庫相關(guān)聯(lián)
# remote : 遠(yuǎn)程倉庫的別名
# url : 新建倉庫的鏈接
$ git remote add origin [url]
$ git push
6.4.2 同步遠(yuǎn)程
????執(zhí)行git pull
命令以將其本地存儲(chǔ)庫與遠(yuǎn)程存儲(chǔ)庫同步:
$ git pull
#################################################################
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From http://git.oschina.net/yiibai/sample
51de0f0..01c5462 master -> origin/master
Auto-merging main.py
CONFLICT (content): Merge conflict in main.py
Automatic merge failed; fix conflicts and then commit the result.
6.5 查看遠(yuǎn)程倉庫
????如果想要查看某一個(gè)遠(yuǎn)程倉庫的更多信息,可以使用?git remote show [remote-name]
?命令。 如果想以一個(gè)特定的縮寫名運(yùn)行這個(gè)命令,例如?origin
,會(huì)得到像下面類似的信息:
$ git remote show origin
列出遠(yuǎn)程倉庫的 URL 與跟蹤分支的信息:
1、正處于
test
分支;2、如果運(yùn)行?
git pull
,就會(huì)抓取所有的遠(yuǎn)程引用,然后將遠(yuǎn)程?test
?分支合并到本地?test
?分支。3、也會(huì)列出拉取到的所有遠(yuǎn)程引用:
????????哪些遠(yuǎn)程分支不在你的本地,哪些遠(yuǎn)程分支已經(jīng)從服務(wù)器上移除了,還有當(dāng)你執(zhí)行?
git pull
?時(shí)哪些分支會(huì)自動(dòng)合并。
6.6 遠(yuǎn)程倉庫的移除與重命名
????如果想要重命名引用的名字可以運(yùn)行?git remote rename
?去修改一個(gè)遠(yuǎn)程倉庫的簡(jiǎn)寫名:
$ git remote rename gs newgs
????如果因?yàn)橐恍┰蛳胍瞥粋€(gè)遠(yuǎn)程倉庫,可以使用?git remote rm
?:
$ git remote rm sn3
文章來源:http://www.zghlxwxcb.cn/news/detail-709148.html
6.6.1 代碼退回
$ git reset --soft(hard) commit_id
文章來源地址http://www.zghlxwxcb.cn/news/detail-709148.html
到了這里,關(guān)于Git(五):歷史提交與遠(yuǎn)程倉庫修改的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!