wanweifeng
作者wanweifeng·2016-07-15 10:40
软件开发工程师·未知

git使用

字数 2329阅读 1406评论 1赞 0

  作为一个Windows下的C#开发人员我一惯是反对使用UNIX下移植或Java移植的任何东西的,特别是Git这样通过shell实现再借助cygwin进行移植的东西。

但由于项目组用它,本人在经历了多番折磨后,简单说下git的用法。事实证明,项目组并不是只有我一人没掌握其用法。

  为什么网上那么多文章,我还要在这里废话?

  因为那些文章某些废话省略了,很不易读。

  你必须用命令行。至于还用不用其它的,那就随你便了,命令行不可或缺。

  TortoiseGit我已经证明存在一处功能缺陷,所以我很怀疑它还存在其它缺陷。

  SourceTree有些功能没有,而且界面设计不合理,也很不符合一般Windows程序的思维,我已经看到我的同事在操作它时有相同的思维,但SourceTree却并不是那样设计的。

  GitExtension也有些功能没有,使用上也有很多地方需要猜,界面的中文翻译也不专业。

  以上三项,你觉得不服,我也不辩。

  我只想说明一个问题:必须用命令行,至少目前是这样。如果你目前用git决不用命令行,那是你的本事,但我不具有这个能力。

  但我觉得这其中TortoiseGit是必须安装的,因为在Windows的文件浏览器中真看本地库是,图标上可以显示出文件或文件夹的各种状态,比如哪些文件更改过了。这与TortoiseSVN是一样的。

1. 下载git,本人下载的是便携版。

2. 便携版不用安装,解压即可。

3. 运行git:运行其中的git-bash即可。

4. 建git库。建一个文件夹即可,但此时还不是库,一般你有两种选择:

  1) 建一个空库,命令为:

    git --bare init 

  2) 直接clone一个库。命令为

    git clone <版本库的网址>  <本地目录名>

  需要注意的是,这里的第二个参数往往可以省略,这时会在当前目录创建一个文件夹并在其下建一个库。

  在些还需要另外指出,在此命令行下,还可以使用DOS命令,比如更改当前目录的命令cd,但是不同的是,如果你需要切到到D盘,你需要用

  cd /d

如果你需要切换到D盘下的Doc目录,则需要执行

  cd /d/Doc

如果的d:/Doc目录下继续运行

   git clone http://code.huawei.com/WeMind/WeMind.git

则会在d:/Doc目录下建一个WeMind目录,并把远程的WeMind库下载到该目录中。

  命令执行完后如果目录下有了一个“.git”的隐藏文件夹,这就基本上说明库建好了。在UNIX下,以点号开头的文件就代表隐藏文件。

  命令行下支持以shift + insert进行粘贴。

  命令行下也支持方向键上下直接输入历史命令。

5. 下始使用

  在上面的git clone完成后,doc目录下有了WeMind目录,这时只需要运行

  cd WeMind

  这时,提示符后不但目录改了,后面还多了

  (develp)

  这表示其目前的版本。

6. 各命令

  git remote

  它表示列出所有远程主机。WeMind里,这里显示

origin

  如果运行

git remote -v

  则不但显示origin,还会显示刚才clone时输入的版本库网址。

7. git branch -r  显示远程各版本

   git branch -a  显示所有版本,到现在为此此命令只会显示develop

   git branch -l  显示本地分支。

   git branch     与带 -l 参数相同

  其中以绿色显示的为当前版本

8. 建新分支

   git checkout -b <新分支名> <源分支名>

比如

  git checkout -b testNewBranch origin/develop

则会在origin/develop为基础建立testNewBranch分支。

注意,分支名不能有空格,加上引号也不行,至于怎么样在分支名中用空格,我不知道也不想知道。

9. 切换分支。命令为

  git checkout <分支名>

比如

  git checkout testNewBranch2 

则切换到 testNewBranch2 

9. 删除本地分支。命令为

      git branch -d <分支名>

比如

  git branch -d testNewBranch

则删除本地 testNewBranch 分支。

注意,不能删除当前分支。需要先切换到其它分支,再行删除。

10. 将本地版本推送到远程服务器。命令为

    git push <远程主机名> <本地分支名>:<远程分支名>

比如

    git push origin testNewBranch

则将testNewBranch 推送到远端origin这个主机下。

11. 删除远程分支。命令为

  git push --delete <主机> <分支名>

比如

  git push origin --delete testNewBranch 

删除远程testNewBranch时,并不需要把切换出本地testNewBranch,本地当前为哪个分支,并不干扰远端为哪个要支。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论1 条评论

wanweifengwanweifeng软件开发工程师未知
2016-07-15 10:40
12. 分目录存放各分支

  在建分支时,按目录形式给成分支名即可,比如

git checkout -b B270/_0000000_测试用的 origin/develop

这样就会将'_0000000_测试用的'这一分支放在'B270'这个目录下。

提交时也一样,比如

git push origin B270/_0000000_测试用的

需要注意的是,可以用 tab 键来自动完成输入。

13. 本地分支重命名

   git branch -m <原分支名> <更改后的分支名>

比如

  git branch -m testNewBranch3 testNewBranch2

将 testNewBranch3 更名为 testNewBranch2

注意,这一行为远程服务器并不知道,也没有标识让下次提交时让它知道。

如果先向远程推送 testNewBranch3 ,再将其更名为 testNewBranch2,再推送 testNewBranch2,则远程服务器上即有 testNewBranch3,也有testNewBranch2。

14. 把本地tag推送到远程。

git push --tags

15. 获取远程tag

git fetch origin tag <tagname>

16. 获取远程分支

  git pull <远程主机名> <远程分支名>:<本地分支名>

比如

  git pull origin testNewBranch2:testnewBranch2

将远端主机origin下的testNewBranch2下载为本主分支testNewBranch2

17. 提交到本地库

   git commit

19. 文件重命名

  git mv version.txt version2.txt

对于批量重命名,请查看

http://zengrong.net/post/1236.htm

同时也建议在文件浏览器的右键菜单的TortoiseGit子菜单中进行重命名。

20. 中途退出,这个DOS就支持的命令,在git-bash里也一样支持

     Ctrl + C

比如本人使用git whatchanged命令,发现显示太多内容,需要退出,就是这样处理的。

21. 显示最近修改的文件列表

git log --name-status 每次修改的文件列表, 显示状态

git log --name-only 每次修改的文件列表

git log --stat 每次修改的文件列表, 及文件修改的统计

git whatchanged 每次修改的文件列表

git whatchanged --stat 每次修改的文件列表, 及文件修改的统计

git show 显示最后一次的文件改变的具体内容

22. 对于git的更改记录,建议使用Git Extension更进查看
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广