• Git 常用命令


    一、GIT 基础:

    1、取得项目的仓库

    git init

    git add FILES

    git clone [https/http、ssh、git]

    2、记录每次更新到仓库

    git status

    git status -s 或 git status --short

    .gitignore

    git diff 【当前工作目录与暂存】

    git diff --staged        【暂存与上次提交快照】

    git commit

    git commit -v(详细提示)

    删除暂存区

    git rm  FILES 【git rm log/*.log,删除 log/ 目录下扩展名为 .log 的所有文件】

    git rm -f FILES   (修改过且已经放到缓存区)

    git rm --cached  FILES   (保留在硬盘,但不继续跟踪)

     git mv file_from file_to

    3、查看提交历史

    git log

    git log -p -2 (显示每次提交的内容差异,显示最近的2次更新)

    git log --stat (显示简要的增改行数统计)

    git log --pretty=oneline/short/full/fuller/format

    git log --graph

    git log 【--since --until -n  --author --committer】

    gitk

    4、撤销

    git commit --amend (撤销刚才的提交操作,重新commit暂存区新内容)

    取消已经暂存的文件

    git reset HEAD <file>  【有提示】

    取消工作目录已经修改的文件

    git checkout -- <file>  【危险】【有提示】

    注意:任何已经提交到GIT的数据都可以被恢复。

    5、远程仓库的使用

    git remote                                                (至少有一个origin的远程库,git默认使用这个来标识你所克隆的原始仓库)

    git remote -v                                            (显示对应的克隆地址)

    git remote add [shortname] [url]              ( 添加一个新的远程仓库)

    git fetch [remote-name]                           (fetch只是将远端仓库数据拉下来,并不自动合并到当前分支)

    git pull                                                      (如果设置了某个分支跟踪远端仓库某个分支,远端分支自动合并到本地仓库的当前分支。

    git push [remote-name] [branch-name]   (推到remote服务器上的某个branch上)

    git remote rename [origin] [after]

    git remote rm [remote-name]

    二、分支

    git branch [branch-name]                            【新建一个分支】

    git checkout [branch-name]                         【切换到该新分支】

    git checkout -b [branch-name]                     【新建并切换到新分支,上两条命令的结合】

    git merge [branch-name]                             【合并branch-name分支到当前分支】

    git branch -d [branch-name]                        【删除分支】

    git branch                                                    【列出当前所有分支】

    git branch -v                                                【查看各个分支最后一次commit信息】

    git branch --merged                                    【查看哪些分支已经被合并到当前分支】

    git branch --no-merged                               【查看哪些分支没有被合并到当前分支】

    【已经合并的分支可以删除,未合并最好不要删除】

    三、远程分支

    (远程库名)/(分支名)   如:origin/master

    git fetch [remote-name]                                                                           【fetch只是将远端仓库数据拉下来,并不自动合并到当前分支】

     获取尚未拥有的数据,更新本地数据库,移动指针(如origin/master)。

    git push [remote-name]    [local-branch]:[remote-branch]                  【提取本地分支更新远程仓库某个分支】

    eg:

    git push origin serverfix                                                                              【取出本地分支serverfix,更新远程仓库serverfix分支】  

    git push origin serverfix:awesomebranch                                                  【取出本地分支serverfix,更新远程仓库awesomebranch】

    fetch之后:不会有新的serverfix分支,只有无法移动的origin/serverfix指针

    git merge [remote-name]/[remote-branch]                                              【合并远程分支到当前分支】

    git checkout -b [branch]    [remote-name]/[remote-branch]                 【在远程分支的基础上分化出一个新分支】

    跟踪分支

    git checkout --track  [remote-name]/[remote-branch]                           简化上一条指令

    eg:git checkout --track origin/serverfix

    git checkout --b  [branch]    [remote-name]/[remote-branch]               绑定远程分支和本地分支

    eg:git checkout -b sf origin/serverfix

    删除远程分支

    git push origin :serverfix                                                                              用空来更新远程分支

    四、衍合

    git rebase master                                          【当前分支衍合到master分支上】

    git checkout master                                       【切换到master分支】

    git merge experiment                                    【快进合并】

    git rebase --onto master server client           【检出client分支,找出client分支和server分支的共同祖先之后的变化,在master上重演】

    git rebase master server                               【检出特性分支server,在主分支master上重演】【省去切换到server这一步】

    注意:永远不用衍合那些已经推送到公共仓库的更新。

    五、服务器上的Git

    协议:本地、SSH、Git、HTTP

    把一个仓库克隆为纯仓库

    git clone --bare  my_project my_project.git

    纯目录转移到服务器

    scp -r my_project.git user@git.example.com:opt/git

    访问权限:建立账户、git账户,用户发SSH公钥

    ssh-keygen

    架设服务器

    1、创建git用户,并创建.ssh目录。

    2、将开发者的SSH公钥放在authorized_keys

    3、git init --bare设定一个空仓库

    4、开发者推送远程分支

    5、git-shell替代shell

    六、分布式Git

    1、集中式工作流

    2、集成管理员工作流

    3、司令官与副官工作流

    七、为项目做贡献

    1、不要在更新中提交多余的白字符。

    2、每次提交限定于完成一次逻辑功能。

    3、提交说明:一行以内,50字符以下,空开一行后,再展开详细注解。祈使现在式语态。

    4、详细注解:本次修订因由、不同实现之间的比较。

    私有小型团队。

    私有团队间协作。

    公开的小型项目【没有更新主仓库分支的权限】。

    公开的大型项目。

  • 相关阅读:
    实现自己的Linq to Sql
    [分享] 浅谈项目需求变更管理
    【分享】老程序员的经验和价值在哪里?
    程序员是自己心中的“上帝”
    [分享]解析“程序员的十大技术烦恼”
    【分享】帮助你早些明白一些道理
    “风雨20年”的20条精辟编程经验
    【分享】 优秀程序员的代码是“活的”
    给开发人员培训时的语录
    【分享】SQL Server优化50法
  • 原文地址:https://www.cnblogs.com/songdechiu/p/9461633.html
Copyright © 2020-2023  润新知