Tips
clone單個(gè)分支
當(dāng)遠(yuǎn)程git庫(kù)體積較大,clone總是失敗時(shí),最好用以下方法Clone單個(gè)分支:
git clone http://xxx.git -b 你要的分支名 --single-branch
clone成功后,想獲取其他分支十籍,用以下命令:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch --all
git放棄修改&放棄增加文件
1. 本地修改了一堆文件(并沒(méi)有使用git add到暫存區(qū)),想放棄修改唇礁。
單個(gè)文件/文件夾:
git checkout -- filename
所有文件/文件夾:
git checkout .
2.本地新增了一堆文件(并沒(méi)有g(shù)it add到暫存區(qū))勾栗,想放棄修改。
單個(gè)文件/文件夾:
rm filename / rm dir -rf
所有文件/文件夾:
git clean -xdf
- 刪除新增的文件盏筐,如果文件已經(jīng)已經(jīng)git add到暫存區(qū)围俘,并不會(huì)刪除!
3. 本地修改/新增了一堆文件琢融,已經(jīng)git add到暫存區(qū)界牡,想放棄修改
單個(gè)文件/文件夾:
git reset HEAD filename
所有文件/文件夾:
git reset HEAD .
4. 本地通過(guò)git add & git commit 之后,想要撤銷此次commit
git reset commit_id
這個(gè)id是你想要回到的那個(gè)節(jié)點(diǎn)漾抬,可以通過(guò)git log查看宿亡,可以只選前6位
撤銷之后,你所做的已經(jīng)commit的修改還在工作區(qū)奋蔚!
git reset --hard commit_id
這個(gè)id是你想要回到的那個(gè)節(jié)點(diǎn)她混,可以通過(guò)git log查看烈钞,可以只選前6位
撤銷之后泊碑,你所做的已經(jīng)commit的修改將會(huì)清除,仍在工作區(qū)/暫存區(qū)的代碼不會(huì)清除毯欣!
配置
Git 自帶一個(gè) git config 的工具來(lái)幫助設(shè)置控制 Git 外觀和行為的配置變量馒过。
/etc/gitconfig 文件: 包含系統(tǒng)上每一個(gè)用戶及他們倉(cāng)庫(kù)的通用配置。 如果使用帶有 --system 選項(xiàng)的 git config 時(shí)酗钞,它會(huì)從此文件讀寫(xiě)配置變量腹忽。
~/.gitconfig 或 ~/.config/git/config 文件:只針對(duì)當(dāng)前用戶来累。 可以傳遞 --global 選項(xiàng)讓 Git 讀寫(xiě)此文件。
當(dāng)前使用倉(cāng)庫(kù)的 Git 目錄中的 config 文件(就是 .git/config):針對(duì)該倉(cāng)庫(kù)窘奏。
每一個(gè)級(jí)別覆蓋上一級(jí)別的配置嘹锁,所以 .git/config 的配置變量會(huì)覆蓋 /etc/gitconfig 中的配置變量。
用戶信息
當(dāng)安裝完 Git 應(yīng)該做的第一件事就是設(shè)置你的用戶名稱與郵件地址着裹。 這樣做很重要领猾,因?yàn)槊恳粋€(gè) Git 的提交都會(huì)使用這些信息,并且它會(huì)寫(xiě)入到你的每一次提交中骇扇,不可更改:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
再次強(qiáng)調(diào)摔竿,如果使用了 --global 選項(xiàng),那么該命令只需要運(yùn)行一次少孝,因?yàn)橹鬅o(wú)論你在該系統(tǒng)上做任何事情继低, Git 都會(huì)使用那些信息。 當(dāng)你想針對(duì)特定項(xiàng)目使用不同的用戶名稱與郵件地址時(shí)稍走,可以在那個(gè)項(xiàng)目目錄下運(yùn)行沒(méi)有 --global 選項(xiàng)的命令來(lái)配置袁翁。
檢查配置信息
如果想要檢查你的配置,可以使用 git config --list 命令來(lái)列出所有 Git 當(dāng)時(shí)能找到的配置钱磅。
$ git config --list
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
你可以通過(guò)輸入 git config <key>: 來(lái)檢查 Git 的某一項(xiàng)配置
$ git config user.name
John Doe
獲取 Git 倉(cāng)庫(kù)
在現(xiàn)有目錄中初始化倉(cāng)庫(kù)
如果你打算使用 Git 來(lái)對(duì)現(xiàn)有的項(xiàng)目進(jìn)行管理梦裂,你只需要進(jìn)入該項(xiàng)目目錄并輸入:
$ git init
跟蹤文件
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
克隆現(xiàn)有的倉(cāng)庫(kù)
克隆倉(cāng)庫(kù)的命令格式是 git clone [url] 。 比如盖淡,要克隆 Git 的可鏈接庫(kù) libgit2年柠,可以用下面的命令:
$ git clone https://github.com/libgit2/libgit2
#$ git clone https://github.com/libgit2/libgit2 mylibgit #在克隆遠(yuǎn)程倉(cāng)庫(kù)的時(shí)候,自定義本地倉(cāng)庫(kù)的名字
這會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)名為 “l(fā)ibgit2” 的目錄褪迟,并在這個(gè)目錄下初始化一個(gè) .git 文件夾冗恨,從遠(yuǎn)程倉(cāng)庫(kù)拉取下所有數(shù)據(jù)放入 .git 文件夾,然后從中讀取最新版本的文件的拷貝味赃。 如果你進(jìn)入到這個(gè)新建的 libgit2 文件夾掀抹,你會(huì)發(fā)現(xiàn)所有的項(xiàng)目文件已經(jīng)在里面了,準(zhǔn)備就緒等待后續(xù)的開(kāi)發(fā)和使用心俗。
記錄每次更新到倉(cāng)庫(kù)
檢查當(dāng)前文件狀態(tài)
$ git status
On branch master
nothing to commit, working directory clean
跟蹤新文件
使用命令 git add 開(kāi)始跟蹤一個(gè)文件傲武。 所以,要跟蹤 README 文件城榛,運(yùn)行:
$ git add README
時(shí)再運(yùn)行 git status 命令揪利,會(huì)看到 README 文件已被跟蹤,并處于暫存狀態(tài):
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
暫存已修改文件
$ git add CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
modified: CONTRIBUTING.md
git add
命令狠持。 這是個(gè)多功能命令:
可以用它開(kāi)始跟蹤新文件疟位,
或者把已跟蹤的文件放到暫存區(qū),
還能用于合并時(shí)把有沖突的文件標(biāo)記為已解決狀態(tài)等喘垂。
將這個(gè)命令理解為“添加內(nèi)容到下一次提交中”而不是“將一個(gè)文件添加到項(xiàng)目中”要更加合適甜刻。
提交更新
$ git commit -m "Story 182: Fix benchmarks for speed"
[master 463dc4f] Story 182: Fix benchmarks for speed
2 files changed, 2 insertions(+)
create mode 100644 README
好绍撞,現(xiàn)在你已經(jīng)創(chuàng)建了第一個(gè)提交! 可以看到得院,提交后它會(huì)告訴你傻铣,當(dāng)前是在哪個(gè)分支(master)提交的,本次提交的完整 SHA-1 校驗(yàn)和是什么(463dc4f)祥绞,以及在本次提交中矾柜,有多少文件修訂過(guò),多少行添加和刪改過(guò)就谜。
跳過(guò)使用暫存區(qū)域
Git 提供了一個(gè)跳過(guò)使用暫存區(qū)域的方式怪蔑, 只要在提交的時(shí)候,給 git commit 加上 -a 選項(xiàng)丧荐,Git 就會(huì)自動(dòng)把所有已經(jīng)跟蹤過(guò)的文件暫存起來(lái)一并提交缆瓣,從而跳過(guò) git add 步驟:
$ git commit -a -m 'added new benchmarks'
[master 83e38c7] added new benchmarks
1 file changed, 5 insertions(+), 0 deletions(-)
分支
查看分支
git branch -r #查看遠(yuǎn)程分支
git branch -a #查看所有分支
會(huì)顯示
origin/HEAD -> origin/master
origin/daily/1.2.2
origin/daily/1.3.0
origin/daily/1.4.1
origin/develop
origin/feature/daily-1.0.0
origin/master
然后直接
git checkout origin/daily/1.4.1