git開發流程、經常使用命令及工具、TortoiseGit使用及常見問題

根據我最近使用git的一些經歷,git是基於分支的版本控制工具,分支有遠程分支和本地分支。html

1、開發流程git

 - 從遠程服務器的master,clone一份項目文件到本地,而後本地master的基礎上branch一個新的本地分支xname(或者branch一個已有的遠程分支),而後checkout切換到這個本地分支上,開始開發;windows

 - 開發過程當中能夠不斷的commit到本地,能夠分階段作版本標記(俗稱打tag);bash

 - 開發完成以後,把本地分支xname ,push origin到遠程分支xname上;(也能夠push origin v0.1.2 把某個本地tag推送到服務器上)服務器

 - 遠程分支xname和master合併。ssh

 

2、經常使用命令工具

安裝完成git以後,在文件夾右鍵菜單能夠找到git bash命令行工具。也能夠配置下環境變量使用windows的cmd命令行工具。post

windows的cmd工具,配置一下以後,我以爲還蠻好用的。spa

(找到git的安裝目錄,而後系統環境變量path添加一個「D:\Program Files\Git\cmd」,命令行就能夠運行git命令了).net

進入目錄
cd e:
cd cs

返回根目錄
cd ../

列出本目錄下文件夾
ls

當前下建立文件夾
mkdir

刪除文件夾
rd xx

刪除文件

del xx
————————如下爲git命令——————————

查看本機配置
git config --list

git基本配置
http://magicalboy.com/git-configuration/
配置用戶信息
$ git config --global user.name "xxx"
$ git config --global user.email xx@xx.com

建立本機key
ssh-keygen -t rsa -C 「xx@xx.com」 (默認會在C/user/..下面建立一個.ssh的文件夾,內有一個公鑰文件和一個私鑰文件,公鑰要本身複製放到服務器上)

下載遠程master代碼
git clone git@xxx.git

拉取遠端某分支代碼
git pull origin xname

列出全部本地分支
git branch

列出遠端分支

git branch -r

列出本地+遠端分支
git branch -a

建立分支
git branch xname

切換分支
git checkout xname

建立並切換分支
git checkout -b xname

進入分支查看分支的改動
git status

GUI查看當前分支的修改
gitk

提交全部修改到本地
git commit -a -m "註釋內容,必需要有"
(若是有新增長的文件,須要先add)

提交修改到遠程分支
$ git push origin xname:xname

刪除已經合併過的本地分支
git branch -d xname

強制刪除某個本地分支
git branch -D xname

刪除遠程分支
git push origin :xname
冒號前面的空格不能少,原理是把一個空分支push到server上,至關於刪除該分支。
等同於
$ git push origin --delete xname

列出全部tag
git tag

打tag
git tag -a tagName -m "註釋"

將tag提交到服務器
git push origin v0.1.2(對應到小烏龜上就是push的時候,把Include tags勾上)

將本地全部tag提交到服務器
git push origin --tags

3、git可視化工具

 git hash的亂碼搞得我很是的噁心,裝了一個小烏龜git,TortoiseGit,用了兩天以後發現,賊好用,強烈推薦你們使用。

 舉例:刪除某個遠程分支。

仍是按照原來那句刪除遠程分支的命令行的思路
git沒有刪除遠程分支的命令,能夠用push一個空分支來實現刪除的目的
那 對應到小烏龜上 就是這樣啦

 

---------------------------------------------------------------------------

 4、git小烏龜和git bash如何同時使用的問題

由於在交叉使用中出現了問題,排查以後發現git小烏龜和git bash命令行工具,他們使用的密鑰不是一個類型的。詳細能夠參考這個:http://zengrong.net/post/1722.htm

也就是說,若是想同時使用這兩個工具的話,須要分別爲他們建立一對密鑰。

git bash:用上面列的命令能夠生成公鑰和私鑰;

TortoiseGit:須要使用它本身的puttygen工具生成一對密鑰;詳細能夠參考這個:http://jingyan.baidu.com/article/63f236280f7e750209ab3d60.html

若是參照教程仍是有問題,須要在git bash中git config --list  查看一下"remote.origin.puttykeyfile"的值是否和剛纔用puttygen生成的一致。

 

5、git小烏龜在win8系統下git  clone load puttykey 不可用

原本自認爲本身已經徹底掌握小烏龜的使用了,沒想到今天的實習生來了以後,又出現一個新問題,就是他的win8系統,clone代碼的時候, clone load puttykey 這個選項不可用。百度了一下以後,發現原來是git小烏龜沒有找到ssh client,須要在git setting-network裏指定一下ssh client的程序位置。

以下:Settings > Network > SSH:SSH Client = C:\Program Files (x86)\TortoiseGit\bin\TortoiseGitPLink.exe

此問題參考:http://blog.snsgou.com/post-58.html

 

6、.gitignore不生效問題

Git 代碼管理中,咱們在沒有添加 .gitignore 文件的前提下提交了代碼以後再提交 .gitignore 文件,或者是中途添加某一文件類型到 .gitignore 文件中,須要經過如下命令行的方式,讓 .gitignore 文件生效:
git rm -r --cached .
git add .
git commit -m 「Refresh adding .gitignore file.」
若是是中途從 .gitignore 文件中移除某一文件類型,想要這個文件類型從新被 track,須要經過如下命令行的方式,讓 .gitignore 文件生效:
git add -f *.class
git commit -m 「Refresh removing .class from .gitignore file.」
備註:注意你所處的分支,若是你在當前分支修改,切換到其餘分支是不生效的,若是多人開發,注意合併修改!

參考:http://www.ifeegoo.com/git-code-management-dot-gitignore-file-has-no-effect-solution.html 

 

7、文件名大小寫忽略

默認忽略大小寫,這裏是個大坑,須要配置一下不忽略。

查看當前配置:
git config --get core.ignorecase

配置修改成不忽略
git config core.ignorecase false

 

8、文件重命名/文件刪除的提交

git沒有重命名,只有刪除+新建。

物理刪除掉的文件,須要 git rm 從git記錄中刪除掉,不然不會被提交。

 

其餘參考:
http://zengrong.net/post/1722.htm

git flow:https://www.cnblogs.com/niwanglong385/articles/5645835.html  https://www.cnblogs.com/myqianlan/p/4195994.html

相關文章
相關標籤/搜索