一嚼吞、基本操作
用
git init
來在目錄中創(chuàng)建新的 Git 倉庫舱禽。 你可以在任何時候、任何目錄中這么做翔始,完全是本地化的城瞎。使用
git clone
拷貝一個 Git 倉庫到本地,讓自己能夠查看該項目全谤,或者進行修改认然。使用
git add
添加需要追蹤的新文件和待提交的更改到暫存區(qū)漫萄, 然后使用git status
和git diff
查看有何改動, 最后用git commit
將你的快照記錄毕骡。這就是你要用的基本流程未巫,絕大部分時候都是這樣的。在當前工作目錄執(zhí)行命令:
git add .
Git 會遞歸地將你執(zhí)行命令時所在的目錄中的所有文件添加上去.執(zhí)行
git status
以查看在你上次提交之后有啥被修改或者臨時提交了启昧, 從而決定自己是否需要提交一次快照叙凡,同時也能知道有什么改變被記錄進去了。git diff
顯示已寫入緩存與已修改但尚未寫入緩存的改動的區(qū)別,執(zhí)行git diff
來查看執(zhí)行git status
的結果的詳細信息 —— 一行一行地顯示這些文件是如何被修改或寫入緩存的密末。
git diff HEAD
—— 顯示的是工作目錄與上一次提交的更新的區(qū)別握爷,無視緩存跛璧。git commit -a
自動將在提交前將已記錄、修改的文件放入緩存區(qū),基本上這句話的意思就是新啼,為任何已有記錄的文件執(zhí)行git add .
不過你仍然需要執(zhí)行git add 文件名
來添加新文件git 對本地文件的文件名的大小寫是不敏感額追城,如果修改文件名的大小寫不會添加修改,命令行運行下列代碼燥撞,強制git對大小寫敏感
$ git config core.ignorecase false
git remote
命令列出所有遠程主機 使用-v
選項座柱,可以參看遠程主機的網(wǎng)址
二物舒、 常用命令
1. git branch
【 origin 指的是主機名 master 指的是分支名】
git branch -r
查看遠程分支
git branch -a
查看所有分支
git branch -d (branch name)
刪除本地分支
git branch (new-branch -name)
創(chuàng)建分支
git branch -v
查看各個分支最后一個提交對象的信息
git branch -m <old_branch_name> <new_branch_name>
重命名本地分支
2. git push
$ git push :
git push <遠程主機名> <本地分支名>:<遠程分支名>
執(zhí)行 git push [alias 遠程倉庫名] [branch 遠程分支名]涵叮,就會將你的當前 分支推送成為 [alias] 遠端上的 [branch] 分支。 讓我們試試推送我們的主分支到先前添加的“github”遠端倉庫上去舀瓢。
$ git push origin master
如果省略遠程分支名,則表示將本地分支推送與之存在"追蹤關系"的遠程分支(通常兩者同名),如果該遠程分支不存在蛇摸,則會被新建。
不帶任何參數(shù)的git push
蒋困,默認只推送當前分支颜说,這叫做simple方式。
git push origin --delete <branchName>
刪除一個遠程分支
git push origin :<branchName>
推送一個空分支到遠程分支,其實就相當于刪除遠程分支
3. git pull
$ git pull
比如拟蜻,取回origin主機的dev分支,與本地的master分支合并,需要寫成下面這樣稿蹲。git pull <遠程主機名> <遠程分支名>:<本地分支名>
$ git pull origin dev:master
上面命令表示,取回origin/dev分支,再與當前master分支合并熬拒。實質上欢瞪,這等同于先做git fetch遣鼓,再做git merge回懦。
$ git fetch
$ git fetch origin dev
$ git merge origin/dev
合并fetch下來的遠程dev分支數(shù)據(jù)到當前分支上
git fetch origin 遠程分支名:本地分支名
上面命令表示,取回origin/next分支谭期,再與當前分支
合并胀瞪。實質上,這等同于先做git fetch幔摸,再做git merge驱负。
4. git checkout
git checkout -b [分支名] [遠程主機名]/[分支名]
5. git log
git log --oneline
顯示log一行摘要
git log --author="author-name"
顯示某個用戶提交的log
git log -p (file-name)
某個文件的提交log
6. git tag
- 列出現(xiàn)有標簽的命令
$ git tag
- 帶有通配符的列出命令
$ git tag -l 'v1.4.2.*'
- 新建標簽
$ git tag -a v1.4 -m 'my version 1.4'
引號里面的是標簽說明 - 把標簽推到git服務器上
$ git push origin [tagname]
- 一次推送所有本地新增的標簽到git服務器
git push origin --tags
7. git 追蹤關系
在某些場合酪术,Git會自動在本地分支與遠程分支之間,建立一種追蹤關系(tracking)。比如历帚,在git clone的時候谱煤,所有本地分支默認與遠程主機的同名分支,建立追蹤關系,也就是說,本地的master分支自動”追蹤”origin/master分支缚柳。
Git也允許手動建立追蹤關系。
git branch --set-upstream master origin/dev
上面命令指定本地master分支追蹤遠程 origin/dev分支。
但是據(jù)說上面--set-upstream
這個命令被廢棄了,建議使用--track 或者 --set-upstream-to
來代替
git branch --set-upstream-to=origin/遠程分支名 本地分支名
如果當前分支與遠程分支存在追蹤關系,git pull就可以省略遠程分支名。
$ git pull origin
上面命令表示,本地的當前分支自動與對應的origin主機”追蹤分支”(remote-tracking branch)進行合并。
如何查看本地跟蹤分支對應的遠程分支
git branch -vv(兩個v)夯膀,就能夠看到本地分支跟蹤的遠程分支碟绑。
獲取遠程服務器上某個分支
加入服務器上被合作的伙伴新創(chuàng)建了一個分支押袍,我們可以通過如下方式來獲热:
$ git fetch origin
然后我門會獲取到新的分支的名字
值得注意的是宽闲,在 fetch
操作下載好新的遠程分支之后围辙,你仍然無法在本地編輯該遠程倉庫中的分支。換句話說,在本例中铅匹,你不會有一個新的new_added_branch
分支押赊,有的只是一個你無法移動的 origin/new_added_branch
指針涕俗。
如果要把該內(nèi)容合并到當前分支再姑,可以運行 git merge origin/new_added_branch
滔驶。如果想要一份自己的 new_added_branch
來開發(fā)瓜浸,可以在遠程分支的基礎上分化出一個新的分支來:
$ git checkout -b new_added_branch origin/new_added_branch
Branch new_added_branch set up to track remote branch refs/remotes/origin/new_added_branch.
Switched to a new branch "new_added_branch"
這會切換到新建的 new_added_branch
本地分支雇寇,其內(nèi)容同遠程分支 origin/new_added_branch
一致囚痴,這樣你就可以在里面繼續(xù)開發(fā)了。
三、沖突解決
如果沒有沖突的話映皆,merge完成轰枝。有沖突的話捅彻,git會提示那個文件中有沖突,比如有如下沖突:
<<<<<<< HEAD:test.c
printf (“test1″);
=======
printf (“test2″);
>>>>>>> issueFix:test.c
可以看到 ======= 隔開的上半部分鞍陨,是 HEAD(即 master 分支步淹,在運行 merge 命令時檢出的分支)中的內(nèi)容,下半部分是在 issueFix 分支中的內(nèi)容诚撵。解決沖突的辦法無非是二者選其一或者由你親自整合到一起缭裆。比如你可以通過把這段內(nèi)容替換為下面這樣來解決:
printf (“test2″);
這個解決方案各采納了兩個分支中的一部分內(nèi)容,而且刪除了 <<<<<<<寿烟,=======澈驼,和>>>>>>> 這些行。
在解決了所有文件里的所有沖突后筛武,運行git add 將把它們標記為已解決(resolved)缝其。
然后使用git commit命令進行提交,merge就算完成了