一伙菜、獲取 Git 倉庫
有兩種方式可以獲取 git 倉庫贰镣,一種是在現(xiàn)有的項目或者目錄下將所有文件導(dǎo)入到 git 中酒繁,另一種是從服務(wù)器上克隆一個現(xiàn)有的 git 倉庫穷躁。
1耕肩、第一種方式
git init
下面是實際的操作:
但是這樣只是建立了一個本地的倉庫,現(xiàn)在要將建立一個遠(yuǎn)程的倉庫问潭,并將本地和遠(yuǎn)程的倉庫連接起來。
git remote add origin url
git remote -v
git push -u origin master
此時刷新 github 頁面可以看到已將本地和遠(yuǎn)程倉庫連接起來婚被,還可以看到有一次 commit 以及 push 到遠(yuǎn)程的文件:
第一種方式適用于你想要用 git 倉庫來管理你本地的項目或者文件狡忙。
2、第二種方式
git clone url
復(fù)制已有的 git 倉庫的鏈接址芯,使用 git clone url 命令將遠(yuǎn)程倉庫克隆到本地灾茁。
第二種方式適用于你想要獲取一個已經(jīng)存在的 git 倉庫的拷貝。
二谷炸、上傳本地修改
git add file
添加所有修改可以用 git add .
git commit -m "commit description"
git push
完整的寫法:git push remoteName branchName
git push origin master
可以使用 git status 來查看狀態(tài)
修改之前 file.txt 文件的內(nèi)容:
進(jìn)行的操作:
修改之后 file.txt 文件的內(nèi)容:
三北专、查看 commit 記錄
git log
github 中顯示的 commit 記錄:
使用 git log 命令:
commit 后面跟著的是 commit id,可以用于版本回退旬陡。
四拓颓、版本回退
回退到上 n 個版本:git reset --hard HEAD~n
回退到某個指定的版本:git reset --hard commit id
五、解決沖突
git merge
一般項目會由多人合作描孟,也就會出現(xiàn)沖突的情況驶睦。一般沖突分為兩種砰左,一種是 A 對 a 文件修改,B 對 b 文件修改场航,另一種是 A 和 B 都對 file 文件進(jìn)行修改缠导。
1、A 對 a 文件修改溉痢,B 對 b 文件修改
遠(yuǎn)程模擬 A 對 a 文件進(jìn)行修改僻造,A 新增文件 a 且輸入一些內(nèi)容,實際情況下最好不要在 github 上直接進(jìn)行操作:
本地新建文件 b 并輸入內(nèi)容提交:
在進(jìn)行完 add 和 commit 操作之后孩饼,如果直接進(jìn)行 push 操作是會報錯髓削,提示你需要先 git pull,將遠(yuǎn)程文件先拉取下來捣辆,然后才能進(jìn)行 push 操作蔬螟。
git pull 之后會自動的進(jìn)行 merge:
2、A 和 B 都對 file 文件進(jìn)行修改
還是在 github 上模擬 A 對文件 file 的修改:
在本地 B 對 file 文件進(jìn)行修改:
同樣的在 push 操作之前要先進(jìn)行 pull 操作汽畴,但是這個時候不會自動的解決沖突旧巾,而是要手動的解決沖突,解決沖突完之后才能 push 到遠(yuǎn)程忍些。
解決沖突完之后重新 commit鲁猩,然后 push 到遠(yuǎn)程:
六、分支的使用
1罢坝、建立分支
新建分支:git branch branchName
切換分支:git checkout branchName
新建分支并切換到該分支:git checkout -b branchName
查看當(dāng)前所有分支及當(dāng)前所在的分支:git branch
2廓握、暫存
保存當(dāng)前進(jìn)度:git stash
顯示保存進(jìn)度的列表:git stash list
恢復(fù)最新的進(jìn)度到工作區(qū):git stash pop
建立了分支之后,我們在一個分支上進(jìn)行工作嘁酿,工作到一半的時候有人反饋了一個問題需要你立刻解決隙券,但是新的工作進(jìn)行到一半也不方便 commit,此時可以使用 git stash 命令將當(dāng)前分支的工作暫時保存起來闹司,等到解決完其他的問題之后再切回來繼續(xù)進(jìn)行工作娱仔。
- 首先我們切換到 first 分支進(jìn)行一些操作:
我們新建一個 stash.txt 的文件,并寫入了一些內(nèi)容游桩,但是此時 master 分支上需要我們?nèi)プ鲆恍┕ぷ魃龋覀兛梢詫?first 分支當(dāng)前的工作暫存起來,使用 git status 命令可以看到借卧,工作樹是干凈的盹憎。
- 然后我們切換到 master 分支上進(jìn)行工作:
- 最后我們切回 first 分支,恢復(fù)最新的進(jìn)度到工作區(qū)铐刘,繼續(xù)進(jìn)行原來的工作:
3陪每、合并分支
git merge branchName
git rebase branchName
-
git merge
切回到 master 分支上,將 first 分支合并到 master 上:
git merge 合并分支
使用 git log 查看 commit 記錄,會發(fā)現(xiàn)有一條很不規(guī)范的 commit 記錄:
但是同時 git merge 保存了詳細(xì)的合并信息奶稠,當(dāng)需要保留詳細(xì)的合并信息的時候建議使用 git merge俯艰。
-
git rebase
然后我們分別再在兩個分支上進(jìn)行修改,使用 git rebase 進(jìn)行合并锌订,查看 commit 的記錄:
git rebase 合并分支
可以看到竹握,使用 git rebase 合并分支不會出現(xiàn)不規(guī)范的 commit 記錄,但是不會保留詳細(xì)的 merge 信息辆飘,當(dāng)很多的提交信息沒有必要時啦辐,可以嘗試 git rebase。
4蜈项、刪除分支
git branch -d branchName
分支合并到 master 分支上之后芹关,它的作用也就達(dá)到了,我們可以將它刪掉紧卒,不然會殘留許多無用的分支侥衬。
七、不需要追蹤某些文件
1跑芳、永久不追蹤
修改 .gitignore 文件轴总,在 git 中如果想忽略掉某個文件,不讓這個文件提交到版本庫中博个,可以使用修改 .gitignore 文件的方法怀樟。
2、add 之后盆佣,取消追蹤某個文件 / 文件夾
git rm --cached filename
git rm -r --cached foldername