关闭

local git

188人阅读 评论(0) 收藏 举报
分类:

1. 创建bare库

    git init -bare xxx.git

    1) bare库不会存储working tree(即仅有配置文件),容易共享,否则容易提交时发生冲突

     2) 库用.git结束只是一种惯例

2. clone it

    git clone repo/xxx.git ./working

    1)从版本库中clone出xxx.git,到本地目录working

3. add/commit/push

     push就是把本地的修改提交到版本库

     默认版本库的简写是origin

4. 回退到某一个版本

    git reset --soft HEAD^1  //向前回退一个版本(本地文件还没修改,只是修改 git中的head指针,可以用来缩短版本路径)

    git reset --hard HEAD^1  //向前回退一个版本(文件修改将被丢弃,修改 git中的head指针)

    如果仅仅是取回老版本,不影响仓库,可以用checkout

    git checkout  commitid ./   //导出当前的commitid,注意checkout会清空working path中的修改,不可恢复


5. git要在不同机器上share,需要有ssh sever,git依赖ssh共享


===========================================================================================================

1. a.txt 没有 add 想撤销修改
   git checkout -- a.txt
2. 和远程库同步
   git fetch origin
   git merge origin/master
   A.  上述两个命令都是缺省了当前分支,比如当前分支是master,则第一个命令的完全形式是
       git fetch origin master
   B.  如果有其他人修改远程库,上述命令可能出发一次merge,如果没有冲突直接merge即可
3. 查看本地分支
   git branch
   以*号开头的是当前分支
4. 查看远端分支
   git branch -r
5. 查看工作目录的修改
   git diff
6. 查看被缓存的修改(用了add命令的)
   git diff --cached


============================================================================================================

git branch -a
查看分支,远程分支用红色表示(如果支持颜色)

git ls-remote --tags origin
查看远程tags git show [tagname] 显示tags信息

1.创建本地分支

git branch 分支名,例如:git branch bfa.x.y
bfa.x.y是分支名称

2.切换本地分支
git checkout 分支名,例如从master切换到分支:git checkout bfa.x.y

3. 推送branch 转自
在分支上执行: git push origin bfa.x.y
注意:最后必须是分支名称,master可以看作是一个特殊分支

master其实是一个“refspec”,正常的“refspec”的形式为”+<src>:<dst>”,冒号前表示local branch的名字,冒号后表示remote repository下 branch的名字。
注意,如果你省略了<dst>,git就认为你想push到remote repository下和local branch相同名字的branch。听起来有点拗口,再解释下,push是怎么个push法,
就是把本地branch指向的commit push到remote repository下的branch,比如

$git push origin master:master (在local repository中找到名字为master的branch,使用它去更新remote repository下名字为master的branch,
如果remote repository下不存在名字是master的branch,那么新建一个)

$git push origin master (省略了<dst>,等价于“git push origin master:master”)

$git push origin master:refs/for/mybranch (在local repository中找到名字为master的branch,用他去更新remote repository下面名字为mybranch的branch)

$git push origin HEAD:refs/for/mybranch (HEAD指向当前工作的branch,master不一定指向当前工作的branch,所以我觉得用HEAD还比master好些)

$git push origin :mybranch (再origin repository里面查找mybranch,删除它。用一个空的去更新它,就相当于删除了)


=========================================================================================================
转载源
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。

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

注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。

如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
$ git push origin master
上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
$ git push origin :master
# 等同于
$ git push origin --delete master
上面命令表示删除origin主机的master分支。





$git log --stat

 显示每次提交时修改文件的列表


$git log --graph --pretty=format:'%Cred%h%Creset @%C(yellow)%d%Creset %n Author: %cn %ce %n Date: %cd %Cblue(%cr)%Creset %n %n Commit subject: %Cgreen%s%Creset %n'
 修改输出格式,很花哨...


$git config --global alias.lg "log --graph --pretty=format:'%Cred%H%Creset @%C(yellow)%d%Creset %n Author: %cn %ce %n Date: %cd %Cblue(%cr)%Creset %n %n Commit subject: %Cgreen%s%Creset %n'"

增加别名lg,以后直接输出git lg 就相当于输出上面一长串




同步远程库到本地,但不修改本地工作目录

git fetch

然后单个文件

git checkout origin/master -- filepath



放弃本地修改,强制同步远程分支

git fetch --all
git reset --hard origin/[分支名]

这种方式不会有merge的过程


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:102572次
    • 积分:3966
    • 等级:
    • 排名:第7909名
    • 原创:249篇
    • 转载:158篇
    • 译文:3篇
    • 评论:3条
    文章分类
    最新评论